| Index: tests/corelib/iterable_tostring_test.dart
|
| diff --git a/tests/corelib/iterable_tostring_test.dart b/tests/corelib/iterable_tostring_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ee93170c3d329c8efb9c0d7f64344e61068d5fc1
|
| --- /dev/null
|
| +++ b/tests/corelib/iterable_tostring_test.dart
|
| @@ -0,0 +1,106 @@
|
| +// Copyright (c) 2013, 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.
|
| +
|
| +// Test the IterableBase/IterableMixin toString method.
|
| +
|
| +import "package:expect/expect.dart";
|
| +import "dart:collection";
|
| +
|
| +String mkIt(int len, [func]) {
|
| + var list;
|
| + if (func == null) {
|
| + list = new List.generate(len, (x) => x);
|
| + } else {
|
| + list = new List.generate(len, func);
|
| + }
|
| + return new MyIterable(list).toString();
|
| +}
|
| +
|
| +class MyIterable extends IterableBase {
|
| + final Iterable _base;
|
| + MyIterable(this._base);
|
| + Iterator get iterator => _base.iterator;
|
| +}
|
| +
|
| +void main() {
|
| + Expect.equals("()", mkIt(0));
|
| + Expect.equals("(0)", mkIt(1));
|
| + Expect.equals("(0, 1)", mkIt(2));
|
| + Expect.equals("(0, 1, 2, 3, 4, 5, 6, 7, 8)", mkIt(9));
|
| +
|
| + // Builds string up to 60 characters, then finishes with last two
|
| + // elements.
|
| + Expect.equals(
|
| + //0123456789012345678901234567890123456789 - 40 characters
|
| + "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
|
| + "2, 13, 14, 15, 16, 17, 18, ..., 98, 99)",
|
| + mkIt(100));
|
| +
|
| + Expect.equals(
|
| + //0123456789012345678901234567890123456789
|
| + "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
|
| + "2, 13, 14, 15, 16, 17, 18)",
|
| + mkIt(19));
|
| +
|
| + Expect.equals(
|
| + //0123456789012345678901234567890123456789
|
| + "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
|
| + "2, 13, 14, 15, 16, 17, 18, 19)",
|
| + mkIt(20));
|
| +
|
| + Expect.equals(
|
| + //0123456789012345678901234567890123456789
|
| + "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
|
| + "2, 13, 14, 15, 16, 17, 18, 19, 20)",
|
| + mkIt(21));
|
| +
|
| + // Don't show last two elements if more than 100 elements total
|
| + // (can't be 100 elements in 80 characters including commas).
|
| + Expect.equals(
|
| + //0123456789012345678901234567890123456789
|
| + "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
|
| + "2, 13, 14, 15, 16, 17, 18, 19, 20, ...)",
|
| + mkIt(101));
|
| +
|
| + // If last two elements bring total over 80 characters, drop some of
|
| + // the previous ones as well.
|
| +
|
| + Expect.equals(
|
| + //0123456789012345678901234567890123456789
|
| + "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
|
| + "2, 13, ..., 18, xxxxxxxxxxxxxxxxxxxx)",
|
| + mkIt(20, (x) => x == 19 ? "xxxxxxxxxxxxxxxxxxxx": "$x"));
|
| +
|
| + // Never drop the first three or the last two.
|
| + Expect.equals(
|
| + //0123456789012345678901234567890123456789
|
| + "(xxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxx, x"
|
| + "xxxxxxxxxxxxxxxx, ..., 18, xxxxxxxxxxxxx"
|
| + "xxxx)",
|
| + mkIt(20, (x) => (x < 3 || x == 19) ? "xxxxxxxxxxxxxxxxx": "$x"));
|
| +
|
| + // Never drop the first three or the last two.
|
| + Expect.equals(
|
| + //0123456789012345678901234567890123456789
|
| + "(xxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxx, x"
|
| + "xxxxxxxxxxxxxxxx, ..., xxxxxxxxxxxxxxxxx"
|
| + ", 19)",
|
| + mkIt(20, (x) => (x < 3 || x == 18) ? "xxxxxxxxxxxxxxxxx": "$x"));
|
| +
|
| + // If the first three are very long, always include them anyway.
|
| + Expect.equals(
|
| + //0123456789012345678901234567890123456789
|
| + "(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,"
|
| + " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,"
|
| + " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,"
|
| + " ..., 98, 99)",
|
| + mkIt(100, (x) =>
|
| + (x < 3 ) ? "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx": "$x"));
|
| +
|
| + Expect.equals(
|
| + //0123456789012345678901234567890123456789
|
| + "(, , , , , , , , , , , , , , , , , , , ,"
|
| + " , , , , , , , , , , , , , , , ..., , )",
|
| + mkIt(100, (_) => ""));
|
| +}
|
|
|