Index: tests/lib/typed_data/typed_list_buffer_test.dart |
diff --git a/tests/lib/typed_data/typed_list_buffer_test.dart b/tests/lib/typed_data/typed_list_buffer_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1fdc3bd4e1060b187250193fb91163be2462fb91 |
--- /dev/null |
+++ b/tests/lib/typed_data/typed_list_buffer_test.dart |
@@ -0,0 +1,83 @@ |
+// Copyright (c) 2014, 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'; |
+import 'dart:typed_data'; |
+ |
+// Test that the sublist of a typed_data list is of the same type. |
+ |
+class TypedDataConstructor { |
+ final String name; |
+ final Function create; |
+ final Function view; |
+ TypedDataConstructor(this.name, this.create, this.view); |
+} |
+ |
+List constructors = [ |
+ new TypedDataConstructor("ByteData", |
+ (int n) => new ByteData(n), |
+ (ByteBuffer b) => new ByteData.view(b)), |
+ new TypedDataConstructor("Int8", |
+ (int n) => new Int8List(n), |
+ (ByteBuffer b) => new Int8List.view(b)), |
+ new TypedDataConstructor("Uint8", |
+ (int n) => new Uint8List(n), |
+ (ByteBuffer b) => new Uint8List.view(b)), |
+ new TypedDataConstructor("Uint8Clamped", |
+ (int n) => new Uint8ClampedList(n), |
+ (ByteBuffer b) => new Uint8ClampedList.view(b)), |
+ new TypedDataConstructor("Int16", |
+ (int n) => new Int16List(n), |
+ (ByteBuffer b) => new Int16List.view(b)), |
+ new TypedDataConstructor("Uint16", |
+ (int n) => new Uint16List(n), |
+ (ByteBuffer b) => new Uint16List.view(b)), |
+ new TypedDataConstructor("Int32", |
+ (int n) => new Int32List(n), |
+ (ByteBuffer b) => new Int32List.view(b)), |
+ new TypedDataConstructor("Uint32", |
+ (int n) => new Uint32List(n), |
+ (ByteBuffer b) => new Uint32List.view(b)), |
+ // Int64 and Uint64 are not supported on dart2js compiled code. |
+ new TypedDataConstructor("Int64", /// 01: ok |
+ (int n) => new Int64List(n), /// 01: continued |
+ (ByteBuffer b) => new Int64List.view(b)), /// 01: continued |
+ new TypedDataConstructor("Uint64", /// 01: continued |
+ (int n) => new Uint64List(n), /// 01: continued |
+ (ByteBuffer b) => new Uint64List.view(b)), /// 01: continued |
+ new TypedDataConstructor("Float32", |
+ (int n) => new Float32List(n), |
+ (ByteBuffer b) => new Float32List.view(b)), |
+ new TypedDataConstructor("Float64", |
+ (int n) => new Float64List(n), |
+ (ByteBuffer b) => new Float64List.view(b)), |
+ new TypedDataConstructor("Int32x4", |
+ (int n) => new Int32x4List(n), |
+ (ByteBuffer b) => new Int32x4List.view(b)), |
+ new TypedDataConstructor("Float32x4", |
+ (int n) => new Float32x4List(n), |
+ (ByteBuffer b) => new Float32x4List.view(b)) |
+]; |
+ |
+ |
+void main() { |
+ for (var c in constructors) { |
+ String name = c.name; |
+ var typedData = c.create(64); |
+ Expect.isTrue(typedData is! ByteBuffer); |
+ ByteBuffer buffer = typedData.buffer; |
+ Expect.isTrue(buffer is! List && buffer is! ByteData); |
+ Expect.equals(buffer, typedData.buffer, name); |
+ for (var v in constructors) { |
+ String testDesc = "${v.name} view, $name buffer"; |
+ var view = v.view(typedData.buffer); |
+ |
+ Expect.equals(buffer, view.buffer, testDesc); |
+ Expect.isTrue(view is List || view is ByteData, testDesc); |
+ Expect.isTrue(view.buffer is ByteBuffer, testDesc); |
+ Expect.isTrue(view is! ByteBuffer, testDesc); |
+ Expect.isTrue(view.buffer is! List && view.buffer is! ByteData, testDesc); |
+ } |
+ } |
+} |