Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: test/codegen/lib/typed_data/int32x4_list_test.dart

Issue 1673863002: Infra for running lib tests (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Reformat Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/codegen/lib/typed_data/int32x4_list_test.dart
diff --git a/test/codegen/lib/typed_data/int32x4_list_test.dart b/test/codegen/lib/typed_data/int32x4_list_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..4fa19768203710a2a25385fbcf74341b324ff6f2
--- /dev/null
+++ b/test/codegen/lib/typed_data/int32x4_list_test.dart
@@ -0,0 +1,216 @@
+// Copyright (c) 2013, 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.
+// VMOptions=--deoptimization_counter_threshold=1000 --optimization-counter-threshold=10
+
+// Library tag to be able to run in html test framework.
+library int32x4_list_test;
+
+import 'dart:typed_data';
+import 'package:expect/expect.dart';
+
+testLoadStore(array) {
+ Expect.equals(8, array.length);
+ Expect.isTrue(array is List<Int32x4>);
+ array[0] = new Int32x4(1, 2, 3, 4);
+ Expect.equals(1, array[0].x);
+ Expect.equals(2, array[0].y);
+ Expect.equals(3, array[0].z);
+ Expect.equals(4, array[0].w);
+ array[1] = array[0];
+ array[0] = array[0].withX(9);
+ Expect.equals(9, array[0].x);
+ Expect.equals(2, array[0].y);
+ Expect.equals(3, array[0].z);
+ Expect.equals(4, array[0].w);
+ Expect.equals(1, array[1].x);
+ Expect.equals(2, array[1].y);
+ Expect.equals(3, array[1].z);
+ Expect.equals(4, array[1].w);
+}
+
+testLoadStoreDeopt(array, index, value) {
+ array[index] = value;
+ Expect.equals(value.x, array[index].x);
+ Expect.equals(value.y, array[index].y);
+ Expect.equals(value.z, array[index].z);
+ Expect.equals(value.w, array[index].w);
+}
+
+testLoadStoreDeoptDriver() {
+ Int32x4List list = new Int32x4List(4);
+ Int32x4 value = new Int32x4(1, 2, 3, 4);
+ for (int i = 0; i < 20; i++) {
+ testLoadStoreDeopt(list, 0, value);
+ }
+ try {
+ // Invalid index.
+ testLoadStoreDeopt(list, 5, value);
+ } catch (_) {}
+ for (int i = 0; i < 20; i++) {
+ testLoadStoreDeopt(list, 0, value);
+ }
+ try {
+ // null list.
+ testLoadStoreDeopt(null, 0, value);
+ } catch (_) {}
+ for (int i = 0; i < 20; i++) {
+ testLoadStoreDeopt(list, 0, value);
+ }
+ try {
+ // null value.
+ testLoadStoreDeopt(list, 0, null);
+ } catch (_) {}
+ for (int i = 0; i < 20; i++) {
+ testLoadStoreDeopt(list, 0, value);
+ }
+ try {
+ // non-smi index.
+ testLoadStoreDeopt(list, 3.14159, value);
+ } catch (_) {}
+ for (int i = 0; i < 20; i++) {
+ testLoadStoreDeopt(list, 0, value);
+ }
+ try {
+ // non-Int32x4 value.
+ testLoadStoreDeopt(list, 0, 4.toDouble());
+ } catch (_) {}
+ for (int i = 0; i < 20; i++) {
+ testLoadStoreDeopt(list, 0, value);
+ }
+ try {
+ // non-Int32x4List list.
+ testLoadStoreDeopt([new Int32x4(2, 3, 4, 5)], 0, value);
+ } catch (_) {}
+ for (int i = 0; i < 20; i++) {
+ testLoadStoreDeopt(list, 0, value);
+ }
+}
+
+testListZero() {
+ Int32x4List list = new Int32x4List(1);
+ Expect.equals(0, list[0].x);
+ Expect.equals(0, list[0].y);
+ Expect.equals(0, list[0].z);
+ Expect.equals(0, list[0].w);
+}
+
+testView(array) {
+ Expect.equals(8, array.length);
+ Expect.isTrue(array is List<Int32x4>);
+ Expect.equals(0, array[0].x);
+ Expect.equals(1, array[0].y);
+ Expect.equals(2, array[0].z);
+ Expect.equals(3, array[0].w);
+ Expect.equals(4, array[1].x);
+ Expect.equals(5, array[1].y);
+ Expect.equals(6, array[1].z);
+ Expect.equals(7, array[1].w);
+}
+
+testSublist(array) {
+ Expect.equals(8, array.length);
+ Expect.isTrue(array is Int32x4List);
+ var a = array.sublist(0, 1);
+ Expect.equals(1, a.length);
+ Expect.equals(0, a[0].x);
+ Expect.equals(1, a[0].y);
+ Expect.equals(2, a[0].z);
+ Expect.equals(3, a[0].w);
+ a = array.sublist(1, 2);
+ Expect.equals(4, a[0].x);
+ Expect.equals(5, a[0].y);
+ Expect.equals(6, a[0].z);
+ Expect.equals(7, a[0].w);
+ a = array.sublist(0);
+ Expect.equals(a.length, array.length);
+ for (int i = 0; i < array.length; i++) {
+ Expect.equals(array[i].x, a[i].x);
+ Expect.equals(array[i].y, a[i].y);
+ Expect.equals(array[i].z, a[i].z);
+ Expect.equals(array[i].w, a[i].w);
+ }
+}
+
+void testSpecialValues(array) {
+ var tests = [
+ [0x8901234567890, 0x34567890],
+ [0x89012A4567890, -1537836912],
+ [0x80000000, -2147483648],
+ [-0x80000000, -2147483648],
+ [0x7fffffff, 2147483647],
+ [-0x7fffffff, -2147483647],
+ ];
+ var int32x4;
+
+ for (var test in tests) {
+ var input = test[0];
+ var expected = test[1];
+
+ int32x4 = new Int32x4(input, 2, 3, 4);
+ array[0] = int32x4;
+ int32x4 = array[0];
+ Expect.equals(expected, int32x4.x);
+ Expect.equals(2, int32x4.y);
+ Expect.equals(3, int32x4.z);
+ Expect.equals(4, int32x4.w);
+
+ int32x4 = new Int32x4(1, input, 3, 4);
+ array[0] = int32x4;
+ int32x4 = array[0];
+ Expect.equals(1, int32x4.x);
+ Expect.equals(expected, int32x4.y);
+ Expect.equals(3, int32x4.z);
+ Expect.equals(4, int32x4.w);
+
+ int32x4 = new Int32x4(1, 2, input, 4);
+ array[0] = int32x4;
+ int32x4 = array[0];
+ Expect.equals(1, int32x4.x);
+ Expect.equals(2, int32x4.y);
+ Expect.equals(expected, int32x4.z);
+ Expect.equals(4, int32x4.w);
+
+ int32x4 = new Int32x4(1, 2, 3, input);
+ array[0] = int32x4;
+ int32x4 = array[0];
+ Expect.equals(1, int32x4.x);
+ Expect.equals(2, int32x4.y);
+ Expect.equals(3, int32x4.z);
+ Expect.equals(expected, int32x4.w);
+ }
+}
+
+main() {
+ var list;
+
+ list = new Int32x4List(8);
+ for (int i = 0; i < 20; i++) {
+ testLoadStore(list);
+ }
+ for (int i = 0; i < 20; i++) {
+ testSpecialValues(list);
+ }
+
+ Uint32List uint32List = new Uint32List(32);
+ for (int i = 0; i < uint32List.length; i++) {
+ uint32List[i] = i;
+ }
+ list = new Int32x4List.view(uint32List.buffer);
+ for (int i = 0; i < 20; i++) {
+ testView(list);
+ }
+ for (int i = 0; i < 20; i++) {
+ testSublist(list);
+ }
+ for (int i = 0; i < 20; i++) {
+ testLoadStore(list);
+ }
+ for (int i = 0; i < 20; i++) {
+ testListZero();
+ }
+ for (int i = 0; i < 20; i++) {
+ testSpecialValues(list);
+ }
+ testLoadStoreDeoptDriver();
+}
« no previous file with comments | « test/codegen/lib/typed_data/int32x4_bigint_test.dart ('k') | test/codegen/lib/typed_data/int32x4_shuffle_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698