// 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.filled(1, null); testListRead(list, -1); testListRead(list, 1); } void testWrite() { testListWrite([], 0); testListWrite([], -1); testListWrite([], 1); var list = [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); }