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

Unified Diff: runtime/vm/snapshot_test.cc

Issue 14200031: Add more tests of typed data serialization (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments Created 7 years, 8 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/snapshot_test.cc
diff --git a/runtime/vm/snapshot_test.cc b/runtime/vm/snapshot_test.cc
index 6e0911b957b0db95b26c5e822172e2657a25c7bc..d219122efe83c8fa333333f1c84f18c31b5b5eaf 100644
--- a/runtime/vm/snapshot_test.cc
+++ b/runtime/vm/snapshot_test.cc
@@ -2184,28 +2184,74 @@ static void CheckTypedData(Dart_CObject* object,
}
UNIT_TEST_CASE(DartGeneratedListMessagesWithTypedData) {
- const int kArrayLength = 10;
static const char* kScriptChars =
"import 'dart:typeddata';\n"
- "final int kArrayLength = 10;\n"
"getTypedDataList() {\n"
- " var list = new List(kArrayLength);\n"
- " list[0] = new Int8List(256);\n"
- " list[1] = new Uint8List(256);\n"
- " list[2] = new Int16List(256);\n"
- " list[3] = new Uint16List(256);\n"
+ " var list = new List(10);\n"
+ " var index = 0;\n"
+ " list[index++] = new Int8List(256);\n"
+ " list[index++] = new Uint8List(256);\n"
+ " list[index++] = new Int16List(256);\n"
+ " list[index++] = new Uint16List(256);\n"
+ " list[index++] = new Int32List(256);\n"
+ " list[index++] = new Uint32List(256);\n"
+ " list[index++] = new Int64List(256);\n"
+ " list[index++] = new Uint64List(256);\n"
+ " list[index++] = new Float32List(256);\n"
+ " list[index++] = new Float64List(256);\n"
" return list;\n"
"}\n"
"getTypedDataViewList() {\n"
- " var list = new List(kArrayLength);\n"
- " list[0] = new Int8List.view(new Int8List(256));\n"
- " list[1] = new Uint8List.view(new Uint8List(256));\n"
- " list[2] = new Int16List.view(new Int16List(256));\n"
- " list[3] = new Uint16List.view(new Uint16List(256));\n"
- " list[4] = new Int8List.view(new Int16List(256));\n"
- " list[5] = new Uint8List.view(new Uint16List(256));\n"
- " list[6] = new Int16List.view(new Int8List(256));\n"
- " list[7] = new Uint16List.view(new Uint8List(256));\n"
+ " var list = new List(30);\n"
+ " var index = 0;\n"
+ " list[index++] = new Int8List.view(new Int8List(256));\n"
+ " list[index++] = new Uint8List.view(new Uint8List(256));\n"
+ " list[index++] = new Int16List.view(new Int16List(256));\n"
+ " list[index++] = new Uint16List.view(new Uint16List(256));\n"
+ " list[index++] = new Int32List.view(new Int32List(256));\n"
+ " list[index++] = new Uint32List.view(new Uint32List(256));\n"
+ " list[index++] = new Int64List.view(new Int64List(256));\n"
+ " list[index++] = new Uint64List.view(new Uint64List(256));\n"
+ " list[index++] = new Float32List.view(new Float32List(256));\n"
+ " list[index++] = new Float64List.view(new Float64List(256));\n"
+
+ " list[index++] = new Int8List.view(new Int16List(256));\n"
+ " list[index++] = new Uint8List.view(new Uint16List(256));\n"
+ " list[index++] = new Int8List.view(new Int32List(256));\n"
+ " list[index++] = new Uint8List.view(new Uint32List(256));\n"
+ " list[index++] = new Int8List.view(new Int64List(256));\n"
+ " list[index++] = new Uint8List.view(new Uint64List(256));\n"
+ " list[index++] = new Int8List.view(new Float32List(256));\n"
+ " list[index++] = new Uint8List.view(new Float32List(256));\n"
+ " list[index++] = new Int8List.view(new Float64List(256));\n"
+ " list[index++] = new Uint8List.view(new Float64List(256));\n"
+
+ " list[index++] = new Int16List.view(new Int8List(256));\n"
+ " list[index++] = new Uint16List.view(new Uint8List(256));\n"
+ " list[index++] = new Int16List.view(new Int32List(256));\n"
+ " list[index++] = new Uint16List.view(new Uint32List(256));\n"
+ " list[index++] = new Int16List.view(new Int64List(256));\n"
+ " list[index++] = new Uint16List.view(new Uint64List(256));\n"
+ " list[index++] = new Int16List.view(new Float32List(256));\n"
+ " list[index++] = new Uint16List.view(new Float32List(256));\n"
+ " list[index++] = new Int16List.view(new Float64List(256));\n"
+ " list[index++] = new Uint16List.view(new Float64List(256));\n"
+ " return list;\n"
+ "}\n"
+ "getMultipleTypedDataViewList() {\n"
+ " var list = new List(10);\n"
+ " var index = 0;\n"
+ " var data = new Uint8List(256);\n"
+ " list[index++] = new Int8List.view(data);\n"
+ " list[index++] = new Uint8List.view(data);\n"
+ " list[index++] = new Int16List.view(data);\n"
+ " list[index++] = new Uint16List.view(data);\n"
+ " list[index++] = new Int32List.view(data);\n"
+ " list[index++] = new Uint32List.view(data);\n"
+ " list[index++] = new Int64List.view(data);\n"
+ " list[index++] = new Uint64List.view(data);\n"
+ " list[index++] = new Float32List.view(data);\n"
+ " list[index++] = new Float64List.view(data);\n"
" return list;\n"
"}\n";
@@ -2225,52 +2271,125 @@ UNIT_TEST_CASE(DartGeneratedListMessagesWithTypedData) {
Dart_CObject* root = GetDeserializedDartMessage(lib, "getTypedDataList");
EXPECT_NOTNULL(root);
EXPECT_EQ(Dart_CObject::kArray, root->type);
- EXPECT_EQ(kArrayLength, root->value.as_array.length);
- CheckTypedData(root->value.as_array.values[0],
- Dart_CObject::kInt8Array,
- 256);
- CheckTypedData(root->value.as_array.values[1],
- Dart_CObject::kUint8Array,
- 256);
- CheckTypedData(root->value.as_array.values[2],
- Dart_CObject::kInt16Array,
- 512);
- CheckTypedData(root->value.as_array.values[3],
- Dart_CObject::kUint16Array,
- 512);
+ struct {
+ Dart_CObject::TypedDataType type;
+ int size;
+ } expected[] = {
+ { Dart_CObject::kInt8Array, 256},
+ { Dart_CObject::kUint8Array, 256},
+ { Dart_CObject::kInt16Array, 512},
+ { Dart_CObject::kUint16Array, 512},
+ { Dart_CObject::kInt32Array, 1024},
+ { Dart_CObject::kUint32Array, 1024},
+ { Dart_CObject::kInt64Array, 2048},
+ { Dart_CObject::kUint64Array, 2048},
+ { Dart_CObject::kFloat32Array, 1024},
+ { Dart_CObject::kFloat64Array, 2048},
+ { Dart_CObject::kNumberOfTypedDataTypes, -1 }
+ };
+
+ int i = 0;
+ while (expected[i].type != Dart_CObject::kNumberOfTypedDataTypes) {
+ CheckTypedData(root->value.as_array.values[i],
+ expected[i].type,
+ expected[i].size);
+ i++;
+ }
+ EXPECT_EQ(i, root->value.as_array.length);
}
{
// Generate a list of Uint8List views from Dart code.
+
ApiNativeScope scope;
Dart_CObject* root =
GetDeserializedDartMessage(lib, "getTypedDataViewList");
EXPECT_NOTNULL(root);
EXPECT_EQ(Dart_CObject::kArray, root->type);
- EXPECT_EQ(kArrayLength, root->value.as_array.length);
- CheckTypedData(root->value.as_array.values[0],
- Dart_CObject::kInt8Array,
- 256);
- CheckTypedData(root->value.as_array.values[1],
- Dart_CObject::kUint8Array,
- 256);
- CheckTypedData(root->value.as_array.values[2],
- Dart_CObject::kInt16Array,
- 512);
- CheckTypedData(root->value.as_array.values[3],
- Dart_CObject::kUint16Array,
- 512);
- CheckTypedData(root->value.as_array.values[4],
- Dart_CObject::kInt8Array,
- 512);
- CheckTypedData(root->value.as_array.values[5],
- Dart_CObject::kUint8Array,
- 512);
- CheckTypedData(root->value.as_array.values[6],
- Dart_CObject::kInt16Array,
- 256);
- CheckTypedData(root->value.as_array.values[7],
- Dart_CObject::kUint16Array,
- 256);
+ struct {
+ Dart_CObject::TypedDataType type;
+ int size;
+ } expected[] = {
+ { Dart_CObject::kInt8Array, 256},
+ { Dart_CObject::kUint8Array, 256},
+ { Dart_CObject::kInt16Array, 512},
+ { Dart_CObject::kUint16Array, 512},
+ { Dart_CObject::kInt32Array, 1024},
+ { Dart_CObject::kUint32Array, 1024},
+ { Dart_CObject::kInt64Array, 2048},
+ { Dart_CObject::kUint64Array, 2048},
+ { Dart_CObject::kFloat32Array, 1024},
+ { Dart_CObject::kFloat64Array, 2048},
+
+ { Dart_CObject::kInt8Array, 512},
+ { Dart_CObject::kUint8Array, 512},
+ { Dart_CObject::kInt8Array, 1024},
+ { Dart_CObject::kUint8Array, 1024},
+ { Dart_CObject::kInt8Array, 2048},
+ { Dart_CObject::kUint8Array, 2048},
+ { Dart_CObject::kInt8Array, 1024},
+ { Dart_CObject::kUint8Array, 1024},
+ { Dart_CObject::kInt8Array, 2048},
+ { Dart_CObject::kUint8Array, 2048},
+
+ { Dart_CObject::kInt16Array, 256},
+ { Dart_CObject::kUint16Array, 256},
+ { Dart_CObject::kInt16Array, 1024},
+ { Dart_CObject::kUint16Array, 1024},
+ { Dart_CObject::kInt16Array, 2048},
+ { Dart_CObject::kUint16Array, 2048},
+ { Dart_CObject::kInt16Array, 1024},
+ { Dart_CObject::kUint16Array, 1024},
+ { Dart_CObject::kInt16Array, 2048},
+ { Dart_CObject::kUint16Array, 2048},
+
+ { Dart_CObject::kNumberOfTypedDataTypes, -1 }
+ };
+
+ int i = 0;
+ while (expected[i].type != Dart_CObject::kNumberOfTypedDataTypes) {
+ CheckTypedData(root->value.as_array.values[i],
+ expected[i].type,
+ expected[i].size);
+ i++;
+ }
+ EXPECT_EQ(i, root->value.as_array.length);
+ }
+ {
+ // Generate a list of Uint8Lists from Dart code.
+ ApiNativeScope scope;
+ Dart_CObject* root =
+ GetDeserializedDartMessage(lib, "getMultipleTypedDataViewList");
+ EXPECT_NOTNULL(root);
+ EXPECT_EQ(Dart_CObject::kArray, root->type);
+ struct {
+ Dart_CObject::TypedDataType type;
+ int size;
+ } expected[] = {
+ { Dart_CObject::kInt8Array, 256},
+ { Dart_CObject::kUint8Array, 256},
+ { Dart_CObject::kInt16Array, 256},
+ { Dart_CObject::kUint16Array, 256},
+ { Dart_CObject::kInt32Array, 256},
+ { Dart_CObject::kUint32Array, 256},
+ { Dart_CObject::kInt64Array, 256},
+ { Dart_CObject::kUint64Array, 256},
+ { Dart_CObject::kFloat32Array, 256},
+ { Dart_CObject::kFloat64Array, 256},
+ { Dart_CObject::kNumberOfTypedDataTypes, -1 }
+ };
+
+ int i = 0;
+ while (expected[i].type != Dart_CObject::kNumberOfTypedDataTypes) {
+ CheckTypedData(root->value.as_array.values[i],
+ expected[i].type,
+ expected[i].size);
+
+ // All views point to the same data.
+ EXPECT_EQ(root->value.as_array.values[0]->value.as_typed_data.values,
+ root->value.as_array.values[i]->value.as_typed_data.values);
+ i++;
+ }
+ EXPECT_EQ(i, root->value.as_array.length);
}
}
Dart_ExitScope();
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698