| 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__;
|
|
|