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

Unified Diff: runtime/vm/snapshot_test.cc

Issue 14142008: Add support for more typed data types on native ports (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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
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__;

Powered by Google App Engine
This is Rietveld 408576698