blob: f1107f7dcf0e14a2dad909bb7c1d930c1886998a [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// This file is for pretty-print tests that rely on the names of various Dart
// types. These tests normally fail when run in minified dart2js, since the
// names will be mangled. This version of the file is modified to expect
// minified names.
library matcher.print_minified_test;
import 'dart:collection';
import 'package:matcher/matcher.dart';
import 'package:matcher/src/pretty_print.dart';
import 'package:unittest/unittest.dart' show test, group;
class DefaultToString {}
class CustomToString {
String toString() => "string representation";
}
class _PrivateName {
String toString() => "string representation";
}
class _PrivateNameIterable extends IterableMixin {
Iterator get iterator => [1, 2, 3].iterator;
}
// A regexp fragment matching a minified name.
final _minifiedName = r"[A-Za-z0-9]{1,3}";
void main() {
group('with an object', () {
test('with a default [toString]', () {
expect(prettyPrint(new DefaultToString()),
matches(r"<Instance of '" + _minifiedName + r"'>"));
});
test('with a custom [toString]', () {
expect(prettyPrint(new CustomToString()),
matches(_minifiedName + r':<string representation>'));
});
test('with a custom [toString] and a private name', () {
expect(prettyPrint(new _PrivateName()),
matches(_minifiedName + r':<string representation>'));
});
});
group('with an iterable', () {
test("that's not a list", () {
expect(prettyPrint([1, 2, 3, 4].map((n) => n * 2)),
matches(_minifiedName + r":\[2, 4, 6, 8\]"));
});
test("that's not a list and has a private name", () {
expect(prettyPrint(new _PrivateNameIterable()),
matches(_minifiedName + r":\[1, 2, 3\]"));
});
});
}