Index: tests/corelib/src/IndexedListAccessTest.dart |
=================================================================== |
--- tests/corelib/src/IndexedListAccessTest.dart (revision 0) |
+++ tests/corelib/src/IndexedListAccessTest.dart (revision 0) |
@@ -0,0 +1,49 @@ |
+// 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. |
+ |
+// Check that indexed access to lists throws correct exception if index |
+// is not int. |
+ |
+main() { |
+ checkList(new List(10)); |
+ var growable = new List(); |
+ growable.add(1); |
+ growable.add(1); |
+ checkList(growable); |
+} |
+ |
+ |
+checkList(var list) { |
+ // Check unoptimized. |
+ Expect.isFalse(checkCatch(getIt, list, 1)); |
+ Expect.isTrue(checkCatch(getIt, list, "hi")); |
+ Expect.isFalse(checkCatch(putIt, list, 1)); |
+ Expect.isTrue(checkCatch(putIt, list, "hi")); |
+ // Optimize 'getIt' and 'putIt'. |
+ for (int i = 0; i < 2000; i++) { |
+ putIt(list, 1); |
+ getIt(list, 1); |
+ } |
+ Expect.isTrue(checkCatch(getIt, list, "hi")); |
+ Expect.isTrue(checkCatch(putIt, list, "hi")); |
+} |
+ |
+checkCatch(var f, var list, var index) { |
+ try { |
+ f(list, index); |
+ } catch (IllegalArgumentException e) { |
+ return true; |
+ } |
+ return false; |
+} |
+ |
+ |
+getIt(var a, var i) { |
+ return a[i]; |
+} |
+ |
+ |
+putIt(var a, var i) { |
+ a[i] = null; |
+} |