| // 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 = <int?>[1]; | |
| testListRead(list, -1); | |
| testListRead(list, 1); | |
| list = new List.filled(1, null); | |
| testListRead(list, -1); | |
| testListRead(list, 1); | |
| } | |
| void testWrite() { | |
| testListWrite([], 0); | |
| testListWrite([], -1); | |
| testListWrite([], 1); | |
| var list = <int?>[1]; | |
| testListWrite(list, -1); | |
| testListWrite(list, 1); | |
| list = new List.filled(1, null); | |
| testListWrite(list, -1); | |
| 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 IndexError.withLength( | |
| value, | |
| 0, | |
| indexable: [], | |
| name: name, | |
| message: 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] = 0; | |
| } on RangeError catch (e) { | |
| exception = e; | |
| } | |
| Expect.equals(true, exception != null); | |
| } |