mirror of
https://github.com/dart-lang/sdk
synced 2024-09-19 20:51:50 +00:00
b101a7d002
Change-Id: Ib33169c3e0ffc870915c189404074a1dea472546 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196548 Reviewed-by: Bob Nystrom <rnystrom@google.com> Commit-Queue: Leaf Petersen <leafp@google.com>
172 lines
5.7 KiB
Dart
172 lines
5.7 KiB
Dart
// Copyright (c) 2018, 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 bool supportsInt64 = bool.fromEnvironment('dart.isVM');
|
|
|
|
List<int> intList = <int>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
|
|
checkReadable(List<int> list) {
|
|
for (int i = 0; i < intList.length; i++) {
|
|
Expect.equals(list[i], intList[i]);
|
|
}
|
|
}
|
|
|
|
checkUnmodifiable(List<int> list) {
|
|
var zero = 0;
|
|
var one = 1;
|
|
var two = 2;
|
|
Expect.throwsUnsupportedError(() => list.add(zero));
|
|
Expect.throwsUnsupportedError(() => list.addAll([one, two]));
|
|
Expect.throwsUnsupportedError(() => list.clear());
|
|
Expect.throwsUnsupportedError(() => list.insert(0, zero));
|
|
Expect.throwsUnsupportedError(() => list.insertAll(0, [one, two]));
|
|
Expect.throwsUnsupportedError(() => list.remove(one));
|
|
Expect.throwsUnsupportedError(() => list.removeAt(0));
|
|
Expect.throwsUnsupportedError(() => list.removeLast());
|
|
Expect.throwsUnsupportedError(() => list.removeRange(0, 1));
|
|
Expect.throwsUnsupportedError(() => list.removeWhere((x) => true));
|
|
Expect.throwsUnsupportedError(() => list.replaceRange(0, 1, []));
|
|
Expect.throwsUnsupportedError(() => list.retainWhere((x) => false));
|
|
Expect.throwsUnsupportedError(() => list[0] = zero);
|
|
Expect.throwsUnsupportedError(() => list.setRange(0, 1, [one]));
|
|
Expect.throwsUnsupportedError(() => list.setAll(0, [one]));
|
|
}
|
|
|
|
int8ListTest() {
|
|
Int8List i8l = new Int8List.fromList(intList);
|
|
UnmodifiableInt8ListView list = new UnmodifiableInt8ListView(i8l);
|
|
checkReadable(list);
|
|
checkUnmodifiable(list);
|
|
}
|
|
|
|
uint8ListTest() {
|
|
Uint8List u8l = new Uint8List.fromList(intList);
|
|
UnmodifiableUint8ListView list = new UnmodifiableUint8ListView(u8l);
|
|
checkReadable(list);
|
|
checkUnmodifiable(list);
|
|
}
|
|
|
|
int16ListTest() {
|
|
Int16List i16l = new Int16List.fromList(intList);
|
|
UnmodifiableInt16ListView list = new UnmodifiableInt16ListView(i16l);
|
|
checkReadable(list);
|
|
checkUnmodifiable(list);
|
|
}
|
|
|
|
uint16ListTest() {
|
|
Uint16List u16l = new Uint16List.fromList(intList);
|
|
UnmodifiableUint16ListView list = new UnmodifiableUint16ListView(u16l);
|
|
checkReadable(list);
|
|
checkUnmodifiable(list);
|
|
}
|
|
|
|
int32ListTest() {
|
|
Int32List i32l = new Int32List.fromList(intList);
|
|
UnmodifiableInt32ListView list = new UnmodifiableInt32ListView(i32l);
|
|
checkReadable(list);
|
|
checkUnmodifiable(list);
|
|
}
|
|
|
|
uint32ListTest() {
|
|
Uint32List u32l = new Uint32List.fromList(intList);
|
|
UnmodifiableUint32ListView list = new UnmodifiableUint32ListView(u32l);
|
|
checkReadable(list);
|
|
checkUnmodifiable(list);
|
|
}
|
|
|
|
int64ListTest() {
|
|
Int64List i64l = new Int64List.fromList(intList);
|
|
UnmodifiableInt64ListView list = new UnmodifiableInt64ListView(i64l);
|
|
checkReadable(list);
|
|
checkUnmodifiable(list);
|
|
}
|
|
|
|
uint64ListTest() {
|
|
Uint64List u64l = new Uint64List.fromList(intList);
|
|
UnmodifiableUint64ListView list = new UnmodifiableUint64ListView(u64l);
|
|
checkReadable(list);
|
|
checkUnmodifiable(list);
|
|
}
|
|
|
|
List<double> doubleList = <double>[1.0, 2.0, 3.0, 4.0, 5.0];
|
|
|
|
checkDoubleReadable(List<double> list) {
|
|
for (int i = 0; i < doubleList.length; i++) {
|
|
Expect.equals(list[i], doubleList[i]);
|
|
}
|
|
}
|
|
|
|
checkDoubleUnmodifiable(List<double> list) {
|
|
var zero = 0.0;
|
|
var one = 1.0;
|
|
var two = 2.0;
|
|
Expect.throwsUnsupportedError(() => list.add(zero));
|
|
Expect.throwsUnsupportedError(() => list.addAll([one, two]));
|
|
Expect.throwsUnsupportedError(() => list.clear());
|
|
Expect.throwsUnsupportedError(() => list.insert(0, zero));
|
|
Expect.throwsUnsupportedError(() => list.insertAll(0, [one, two]));
|
|
Expect.throwsUnsupportedError(() => list.remove(one));
|
|
Expect.throwsUnsupportedError(() => list.removeAt(0));
|
|
Expect.throwsUnsupportedError(() => list.removeLast());
|
|
Expect.throwsUnsupportedError(() => list.removeRange(0, 1));
|
|
Expect.throwsUnsupportedError(() => list.removeWhere((x) => true));
|
|
Expect.throwsUnsupportedError(() => list.replaceRange(0, 1, []));
|
|
Expect.throwsUnsupportedError(() => list.retainWhere((x) => false));
|
|
Expect.throwsUnsupportedError(() => list[0] = zero);
|
|
Expect.throwsUnsupportedError(() => list.setRange(0, 1, [one]));
|
|
Expect.throwsUnsupportedError(() => list.setAll(0, [one]));
|
|
}
|
|
|
|
float32ListTest() {
|
|
Float32List f32l = new Float32List.fromList(doubleList);
|
|
UnmodifiableFloat32ListView list = new UnmodifiableFloat32ListView(f32l);
|
|
checkDoubleReadable(list);
|
|
checkDoubleUnmodifiable(list);
|
|
}
|
|
|
|
float64ListTest() {
|
|
Float64List f64l = new Float64List.fromList(doubleList);
|
|
UnmodifiableFloat64ListView list = new UnmodifiableFloat64ListView(f64l);
|
|
checkDoubleReadable(list);
|
|
checkDoubleUnmodifiable(list);
|
|
}
|
|
|
|
byteDataTest() {
|
|
ByteBuffer buffer = new Uint8List.fromList(intList).buffer;
|
|
ByteData bd = new ByteData.view(buffer);
|
|
UnmodifiableByteDataView ubdv = new UnmodifiableByteDataView(bd);
|
|
|
|
Expect.throwsUnsupportedError(() => ubdv.setInt8(0, 0));
|
|
Expect.throwsUnsupportedError(() => ubdv.setUint8(0, 0));
|
|
Expect.throwsUnsupportedError(() => ubdv.setInt16(0, 0));
|
|
Expect.throwsUnsupportedError(() => ubdv.setUint16(0, 0));
|
|
Expect.throwsUnsupportedError(() => ubdv.setInt32(0, 0));
|
|
Expect.throwsUnsupportedError(() => ubdv.setUint32(0, 0));
|
|
Expect.throwsUnsupportedError(() => ubdv.setInt64(0, 0));
|
|
Expect.throwsUnsupportedError(() => ubdv.setUint64(0, 0));
|
|
Expect.throwsUnsupportedError(() => ubdv.setFloat32(0, 0.0));
|
|
Expect.throwsUnsupportedError(() => ubdv.setFloat64(0, 0.0));
|
|
}
|
|
|
|
main() {
|
|
int8ListTest();
|
|
uint8ListTest();
|
|
int16ListTest();
|
|
uint16ListTest();
|
|
int32ListTest();
|
|
uint32ListTest();
|
|
if (supportsInt64) {
|
|
int64ListTest();
|
|
uint64ListTest();
|
|
}
|
|
float32ListTest();
|
|
float64ListTest();
|
|
byteDataTest();
|
|
}
|