Index: runtime/vm/snapshot_test.cc |
diff --git a/runtime/vm/snapshot_test.cc b/runtime/vm/snapshot_test.cc |
index b1e8af8f0486cf836ce64524afcf828b75db63d6..0e134d5fa697af2e02d49e2ad50110cd7ad12e25 100644 |
--- a/runtime/vm/snapshot_test.cc |
+++ b/runtime/vm/snapshot_test.cc |
@@ -91,7 +91,7 @@ static void CompareDartCObjects(Dart_CObject* first, Dart_CObject* second) { |
case Dart_CObject::kString: |
EXPECT_STREQ(first->value.as_string, second->value.as_string); |
break; |
- case Dart_CObject::kUint8Array: |
+ case Dart_CObject::kByteArray: |
EXPECT_EQ(first->value.as_byte_array.length, |
second->value.as_byte_array.length); |
for (int i = 0; i < first->value.as_byte_array.length; i++) { |
@@ -632,7 +632,7 @@ TEST_CASE(SerializeByteArray) { |
ApiNativeScope scope; |
ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); |
Dart_CObject* root = api_reader.ReadMessage(); |
- EXPECT_EQ(Dart_CObject::kUint8Array, root->type); |
+ EXPECT_EQ(Dart_CObject::kByteArray, root->type); |
EXPECT_EQ(kByteArrayLength, root->value.as_byte_array.length); |
for (int i = 0; i < kByteArrayLength; i++) { |
EXPECT(root->value.as_byte_array.values[i] == i); |
@@ -741,7 +741,8 @@ TEST_CASE(SerializeEmptyByteArray) { |
ApiNativeScope scope; |
ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); |
Dart_CObject* root = api_reader.ReadMessage(); |
- EXPECT_EQ(Dart_CObject::kUint8Array, root->type); |
+ EXPECT_EQ(Dart_CObject::kByteArray, root->type); |
+ EXPECT_EQ(Dart_CObject::kUint8Array, root->value.as_byte_array.type); |
EXPECT_EQ(kByteArrayLength, root->value.as_byte_array.length); |
EXPECT(root->value.as_byte_array.values == NULL); |
CheckEncodeDecodeMessage(root); |
@@ -1908,7 +1909,8 @@ UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) { |
for (int i = 0; i < kArrayLength; i++) { |
Dart_CObject* element = root->value.as_array.values[i]; |
EXPECT_EQ(root->value.as_array.values[0], element); |
- EXPECT_EQ(Dart_CObject::kUint8Array, element->type); |
+ EXPECT_EQ(Dart_CObject::kByteArray, element->type); |
+ EXPECT_EQ(Dart_CObject::kUint8Array, element->value.as_byte_array.type); |
EXPECT_EQ(256, element->value.as_byte_array.length); |
} |
} |
@@ -1923,7 +1925,8 @@ UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) { |
for (int i = 0; i < kArrayLength; i++) { |
Dart_CObject* element = root->value.as_array.values[i]; |
EXPECT_EQ(root->value.as_array.values[0], element); |
- EXPECT_EQ(Dart_CObject::kUint8Array, element->type); |
+ EXPECT_EQ(Dart_CObject::kByteArray, element->type); |
+ EXPECT_EQ(Dart_CObject::kUint8Array, element->value.as_byte_array.type); |
EXPECT_EQ(128, element->value.as_byte_array.length); |
EXPECT_EQ(1, element->value.as_byte_array.values[0]); |
EXPECT_EQ(0, element->value.as_byte_array.values[1]); |
@@ -2110,7 +2113,8 @@ UNIT_TEST_CASE(DartGeneratedArrayLiteralMessagesWithBackref) { |
for (int i = 0; i < kArrayLength; i++) { |
Dart_CObject* element = root->value.as_array.values[i]; |
EXPECT_EQ(root->value.as_array.values[0], element); |
- EXPECT_EQ(Dart_CObject::kUint8Array, element->type); |
+ EXPECT_EQ(Dart_CObject::kByteArray, element->type); |
+ EXPECT_EQ(Dart_CObject::kUint8Array, element->value.as_byte_array.type); |
EXPECT_EQ(256, element->value.as_byte_array.length); |
} |
} |
@@ -2125,7 +2129,8 @@ UNIT_TEST_CASE(DartGeneratedArrayLiteralMessagesWithBackref) { |
for (int i = 0; i < kArrayLength; i++) { |
Dart_CObject* element = root->value.as_array.values[i]; |
EXPECT_EQ(root->value.as_array.values[0], element); |
- EXPECT_EQ(Dart_CObject::kUint8Array, element->type); |
+ EXPECT_EQ(Dart_CObject::kByteArray, element->type); |
+ EXPECT_EQ(Dart_CObject::kUint8Array, element->value.as_byte_array.type); |
EXPECT_EQ(128, element->value.as_byte_array.length); |
EXPECT_EQ(1, element->value.as_byte_array.values[0]); |
EXPECT_EQ(0, element->value.as_byte_array.values[1]); |
@@ -2170,6 +2175,109 @@ UNIT_TEST_CASE(DartGeneratedArrayLiteralMessagesWithBackref) { |
} |
+static void CheckByteArray(Dart_CObject* object, |
+ Dart_CObject::ByteArrayType byte_array_type, |
+ int len) { |
+ EXPECT_EQ(Dart_CObject::kByteArray, object->type); |
+ EXPECT_EQ(byte_array_type, object->value.as_byte_array.type); |
+ EXPECT_EQ(len, object->value.as_byte_array.length); |
+} |
+ |
+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" |
+ " 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" |
+ " return list;\n" |
+ "}\n"; |
+ |
+ TestCase::CreateTestIsolate(); |
+ Isolate* isolate = Isolate::Current(); |
+ EXPECT(isolate != NULL); |
+ Dart_EnterScope(); |
+ |
+ Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
+ EXPECT_VALID(lib); |
+ |
+ { |
+ DARTSCOPE(isolate); |
+ { |
+ // Generate a list of Uint8Lists from Dart code. |
+ ApiNativeScope scope; |
+ Dart_CObject* root = GetDeserializedDartMessage(lib, "getTypedDataList"); |
+ EXPECT_NOTNULL(root); |
+ EXPECT_EQ(Dart_CObject::kArray, root->type); |
+ EXPECT_EQ(kArrayLength, root->value.as_array.length); |
+ CheckByteArray(root->value.as_array.values[0], |
+ Dart_CObject::kInt8Array, |
+ 256); |
+ CheckByteArray(root->value.as_array.values[1], |
+ Dart_CObject::kUint8Array, |
+ 256); |
+ CheckByteArray(root->value.as_array.values[2], |
+ Dart_CObject::kInt16Array, |
+ 512); |
+ CheckByteArray(root->value.as_array.values[3], |
+ Dart_CObject::kUint16Array, |
+ 512); |
+ } |
+ { |
+ // 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); |
+ CheckByteArray(root->value.as_array.values[0], |
+ Dart_CObject::kInt8Array, |
+ 256); |
+ CheckByteArray(root->value.as_array.values[1], |
+ Dart_CObject::kUint8Array, |
+ 256); |
+ CheckByteArray(root->value.as_array.values[2], |
+ Dart_CObject::kInt16Array, |
+ 512); |
+ CheckByteArray(root->value.as_array.values[3], |
+ Dart_CObject::kUint16Array, |
+ 512); |
+ CheckByteArray(root->value.as_array.values[4], |
+ Dart_CObject::kInt8Array, |
+ 512); |
+ CheckByteArray(root->value.as_array.values[5], |
+ Dart_CObject::kUint8Array, |
+ 512); |
+ CheckByteArray(root->value.as_array.values[6], |
+ Dart_CObject::kInt16Array, |
+ 256); |
+ CheckByteArray(root->value.as_array.values[7], |
+ Dart_CObject::kUint16Array, |
+ 256); |
+ } |
+ } |
+ Dart_ExitScope(); |
+ Dart_ShutdownIsolate(); |
+} |
+ |
+ |
UNIT_TEST_CASE(PostCObject) { |
// Create a native port for posting from C to Dart |
TestIsolateScope __test_isolate__; |