Index: test/codegen/corelib/range_error_test.dart |
diff --git a/test/codegen/corelib/range_error_test.dart b/test/codegen/corelib/range_error_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ccb0cb764d2b746ab69c1d4e636a92fa573b2928 |
--- /dev/null |
+++ b/test/codegen/corelib/range_error_test.dart |
@@ -0,0 +1,94 @@ |
+// Copyright (c) 2011, 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"; |
+ |
+// Dart test for testing out of range exceptions on arrays, and the content |
+// of range_error toString(). |
+ |
+void main() { |
+ testRead(); |
+ testWrite(); |
+ testToString(); |
+} |
+ |
+void testRead() { |
+ testListRead([], 0); |
+ testListRead([], -1); |
+ testListRead([], 1); |
+ |
+ var list = [1]; |
+ testListRead(list, -1); |
+ testListRead(list, 1); |
+ |
+ list = new List(1); |
+ testListRead(list, -1); |
+ testListRead(list, 1); |
+ |
+ list = new List(); |
+ testListRead(list, -1); |
+ testListRead(list, 0); |
+ testListRead(list, 1); |
+} |
+ |
+void testWrite() { |
+ testListWrite([], 0); |
+ testListWrite([], -1); |
+ testListWrite([], 1); |
+ |
+ var list = [1]; |
+ testListWrite(list, -1); |
+ testListWrite(list, 1); |
+ |
+ list = new List(1); |
+ testListWrite(list, -1); |
+ testListWrite(list, 1); |
+ |
+ list = new List(); |
+ testListWrite(list, -1); |
+ testListWrite(list, 0); |
+ testListWrite(list, 1); |
+} |
+ |
+void testToString() { |
+ for (var name in [null, "THENAME"]) { |
+ for (var message in [null, "THEMESSAGE"]) { |
+ var value = 37; |
+ for (var re in [ |
+ new ArgumentError.value(value, name, message), |
+ new RangeError.value(value, name, message), |
+ new RangeError.index(value, [], name, message), |
+ new RangeError.range(value, 0, 24, name, message) |
+ ]) { |
+ var str = re.toString(); |
+ if (name != null) Expect.isTrue(str.contains(name), "$name in $str"); |
+ if (message != null) Expect.isTrue(str.contains(message), |
+ "$message in $str"); |
+ Expect.isTrue(str.contains("$value"), "$value in $str"); |
+ // No empty ':' separated parts - in that case the colon is omitted too. |
+ Expect.isFalse(str.contains(new RegExp(":\s*:"))); |
+ } |
+ } |
+ } |
+} |
+ |
+void testListRead(list, index) { |
+ var exception = null; |
+ try { |
+ var e = list[index]; |
+ } on RangeError catch (e) { |
+ exception = e; |
+ } |
+ Expect.equals(true, exception != null); |
+} |
+ |
+void testListWrite(list, index) { |
+ var exception = null; |
+ try { |
+ list[index] = null; |
+ } on RangeError catch (e) { |
+ exception = e; |
+ } |
+ Expect.equals(true, exception != null); |
+} |