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

Unified Diff: runtime/vm/snapshot_test.cc

Issue 9235063: Implementation of message reader for converting a message snapshot into a C structure (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 11 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
« runtime/vm/snapshot.cc ('K') | « runtime/vm/snapshot.cc ('k') | 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 0698e99db2ecc7eed9efd4f6208a65b7b5bf6973..7a971678449159b26b0991e259fa2ed2a790491b 100644
--- a/runtime/vm/snapshot_test.cc
+++ b/runtime/vm/snapshot_test.cc
@@ -55,6 +55,12 @@ TEST_CASE(SerializeNull) {
SnapshotReader reader(snapshot, Isolate::Current());
const Object& serialized_object = Object::Handle(reader.ReadObject());
EXPECT(Equals(null_object, serialized_object));
+
+ // Read object back from the snapshot into a C structure.
+ MessageReader mreader(buffer + Snapshot::kHeaderSize, writer.BytesWritten());
+ Dart_Value* value = mreader.ReadObject();
+ EXPECT_EQ(Dart_Value::kNull, value->type);
+ free(value);
}
@@ -73,6 +79,13 @@ TEST_CASE(SerializeSmi1) {
SnapshotReader reader(snapshot, Isolate::Current());
const Object& serialized_object = Object::Handle(reader.ReadObject());
EXPECT(Equals(smi, serialized_object));
+
+ // Read object back from the snapshot into a C structure.
+ MessageReader mreader(buffer + Snapshot::kHeaderSize, writer.BytesWritten());
+ Dart_Value* value = mreader.ReadObject();
+ EXPECT_EQ(Dart_Value::kInt32, value->type);
+ EXPECT_EQ(smi.Value(), value->data.int32);
+ free(value);
}
@@ -91,6 +104,13 @@ TEST_CASE(SerializeSmi2) {
SnapshotReader reader(snapshot, Isolate::Current());
const Object& serialized_object = Object::Handle(reader.ReadObject());
EXPECT(Equals(smi, serialized_object));
+
+ // Read object back from the snapshot into a C structure.
+ MessageReader mreader(buffer + Snapshot::kHeaderSize, writer.BytesWritten());
+ Dart_Value* value = mreader.ReadObject();
+ EXPECT_EQ(Dart_Value::kInt32, value->type);
+ EXPECT_EQ(smi.Value(), value->data.int32);
+ free(value);
}
@@ -109,6 +129,13 @@ TEST_CASE(SerializeDouble) {
SnapshotReader reader(snapshot, Isolate::Current());
const Object& serialized_object = Object::Handle(reader.ReadObject());
EXPECT(Equals(dbl, serialized_object));
+
+ // Read object back from the snapshot into a C structure.
+ MessageReader mreader(buffer + Snapshot::kHeaderSize, writer.BytesWritten());
+ Dart_Value* value = mreader.ReadObject();
+ EXPECT_EQ(Dart_Value::kDouble, value->type);
+ EXPECT_EQ(dbl.value(), value->data.dbl);
+ free(value);
}
@@ -129,6 +156,17 @@ TEST_CASE(SerializeBool) {
SnapshotReader reader(snapshot, Isolate::Current());
EXPECT(Bool::True() == reader.ReadObject());
EXPECT(Bool::False() == reader.ReadObject());
+
+ // Read object back from the snapshot into a C structure.
+ MessageReader mreader(buffer + Snapshot::kHeaderSize, writer.BytesWritten());
+ Dart_Value* value1 = mreader.ReadObject();
+ EXPECT_EQ(Dart_Value::kBool, value1->type);
+ EXPECT_EQ(true, value1->data.bl);
+ Dart_Value* value2 = mreader.ReadObject();
+ EXPECT_EQ(Dart_Value::kBool, value2->type);
+ EXPECT_EQ(false, value2->data.bl);
+ free(value1);
+ free(value2);
}
@@ -149,6 +187,12 @@ TEST_CASE(SerializeBigint) {
obj ^= reader.ReadObject();
OS::Print("%lld", BigintOperations::ToInt64(obj));
EXPECT_EQ(BigintOperations::ToInt64(bigint), BigintOperations::ToInt64(obj));
+
+ // Read object back from the snapshot into a C structure.
+ MessageReader mreader(buffer + Snapshot::kHeaderSize, writer.BytesWritten());
+ Dart_Value* value = mreader.ReadObject();
+ // Bigint not supported.
+ EXPECT(value == NULL);
}
@@ -208,7 +252,8 @@ TEST_CASE(SerializeString) {
// Write snapshot with object content.
uint8_t* buffer;
SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
- String& str = String::Handle(String::New("This string shall be serialized"));
+ static const char* cstr = "This string shall be serialized";
+ String& str = String::Handle(String::New(cstr));
writer.WriteObject(str.raw());
writer.FinalizeBuffer();
@@ -220,6 +265,13 @@ TEST_CASE(SerializeString) {
String& serialized_str = String::Handle();
serialized_str ^= reader.ReadObject();
EXPECT(str.Equals(serialized_str));
+
+ // Read object back from the snapshot into a C structure.
+ MessageReader mreader(buffer + Snapshot::kHeaderSize, writer.BytesWritten());
+ Dart_Value* value = mreader.ReadObject();
+ EXPECT_EQ(Dart_Value::kString, value->type);
+ EXPECT_EQ(0, strcmp(value->data.str, cstr));
siva 2012/01/27 01:56:52 I think we have an EXPECT_STREQ
Søren Gjesse 2012/01/27 14:40:03 Done.
+ free(value);
}
@@ -245,6 +297,19 @@ TEST_CASE(SerializeArray) {
Array& serialized_array = Array::Handle();
serialized_array ^= reader.ReadObject();
EXPECT(array.Equals(serialized_array));
+
+ // Read object back from the snapshot into a C structure.
+ MessageReader mreader(buffer + Snapshot::kHeaderSize, writer.BytesWritten());
+ Dart_Value* value = mreader.ReadObject();
+ EXPECT_EQ(Dart_Value::kArray, value->type);
+ EXPECT_EQ(kArrayLength, value->data.array.len);
+ for (int i = 0; i < kArrayLength; i++) {
+ Dart_Value* element = value->data.array.values[i];
+ EXPECT_EQ(Dart_Value::kInt32, element->type);
+ EXPECT_EQ(i, element->data.int32);
+ free(element);
+ }
+ free(value);
}
@@ -524,6 +589,30 @@ UNIT_TEST_CASE(ScriptSnapshot) {
free(script_snapshot);
}
+
+TEST_CASE(IntArrayMessage) {
+ uint8_t* buffer = NULL;
+ MessageWriter writer(&buffer, &allocator);
+
+ static const int kArrayLength = 2;
+ intptr_t data[kArrayLength] = {1, 2};
+ int len = kArrayLength;
+ writer.WriteMessage(len, data);
+
+ // Read object back from the snapshot into a C structure.
+ MessageReader mreader(buffer + Snapshot::kHeaderSize, writer.BytesWritten());
+ Dart_Value* value = mreader.ReadObject();
+ EXPECT_EQ(Dart_Value::kArray, value->type);
+ EXPECT_EQ(kArrayLength, value->data.array.len);
+ for (int i = 0; i < kArrayLength; i++) {
+ Dart_Value* element = value->data.array.values[i];
+ EXPECT_EQ(Dart_Value::kInt32, element->type);
+ EXPECT_EQ(i + 1, element->data.int32);
+ free(element);
+ }
+ free(value);
+}
+
#endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64).
} // namespace dart
« runtime/vm/snapshot.cc ('K') | « runtime/vm/snapshot.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698