| // Copyright (c) 2019, 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. |
| |
| // @dart = 2.9 |
| |
| import 'dart:typed_data'; |
| |
| import 'package:expect/expect.dart'; |
| |
| const interestingLengths = <int>[ |
| 0x3FFFFFFF00000000, |
| 0x3FFFFFFFFFFFFFF0, |
| 0x3FFFFFFFFFFFFFFE, |
| 0x3FFFFFFFFFFFFFFF, |
| 0x7FFFFFFF00000000, |
| 0x7FFFFFFFFFFFFFF0, |
| 0x7FFFFFFFFFFFFFFE, |
| 0x7FFFFFFFFFFFFFFF, |
| ]; |
| |
| main() { |
| for (int interestingLength in interestingLengths) { |
| bool exceptionCheck(e) { |
| // Allow RangeError as the range check may happen before the allocation. |
| return e is RangeError || e is OutOfMemoryError; |
| } |
| |
| print(interestingLength); |
| |
| Expect.throws(() { |
| var bytearray = new Uint8List(interestingLength); |
| print(bytearray.first); |
| }, exceptionCheck); |
| |
| Expect.throws(() { |
| var bytearray = new Uint8ClampedList(interestingLength); |
| print(bytearray.first); |
| }, exceptionCheck); |
| |
| Expect.throws(() { |
| var bytearray = new Int8List(interestingLength); |
| print(bytearray.first); |
| }, exceptionCheck); |
| |
| Expect.throws(() { |
| var bytearray = new ByteData(interestingLength); |
| print(bytearray.getUint8(0)); |
| }, exceptionCheck); |
| } |
| } |