Index: test/codegen/corelib/set_to_string_test.dart |
diff --git a/test/codegen/corelib/set_to_string_test.dart b/test/codegen/corelib/set_to_string_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..55f31da81ce4ac3165c5a8acd71c1c770abb7910 |
--- /dev/null |
+++ b/test/codegen/corelib/set_to_string_test.dart |
@@ -0,0 +1,37 @@ |
+// 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. |
+ |
+import "package:expect/expect.dart"; |
+import "dart:collection"; |
+ |
+void main() { |
+ Set s = new HashSet(); |
+ s.add(1); |
+ Expect.equals("{1}", s.toString()); |
+ s.remove(1); |
+ s.add(s); |
+ Expect.equals("{{...}}", s.toString()); |
+ |
+ Queue q = new ListQueue(4); |
+ q.add(1); |
+ q.add(2); |
+ q.add(q); |
+ q.add(s); |
+ |
+ Expect.equals("{1, 2, {...}, {{...}}}", q.toString()); |
+ |
+ // Throwing in the middle of a toString does not leave the |
+ // set as being visited |
+ q.addLast(new ThrowOnToString()); |
+ Expect.throws(q.toString, (e) => e == "Bad!"); |
+ q.removeLast(); |
+ Expect.equals("{1, 2, {...}, {{...}}}", q.toString()); |
+} |
+ |
+class ThrowOnToString { |
+ |
+ String toString() { |
+ throw "Bad!"; |
+ } |
+} |