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

Unified Diff: vm/snapshot_test.cc

Issue 11344018: Fix for issue 6311 (serialize the right type). (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 2 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 | « vm/raw_object_snapshot.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/snapshot_test.cc
===================================================================
--- vm/snapshot_test.cc (revision 14118)
+++ vm/snapshot_test.cc (working copy)
@@ -627,6 +627,77 @@
}
+#define TEST_TYPED_ARRAY(darttype, ctype) \
+ { \
+ StackZone zone(Isolate::Current()); \
+ uint8_t* buffer; \
+ MessageWriter writer(&buffer, &zone_allocator); \
+ const int kArrayLength = 127; \
+ darttype& array = darttype::Handle(darttype::New(kArrayLength)); \
+ for (int i = 0; i < kArrayLength; i++) { \
+ array.SetAt(i, i); \
+ } \
+ writer.WriteMessage(array); \
+ intptr_t buffer_len = writer.BytesWritten(); \
+ SnapshotReader reader(buffer, buffer_len, \
+ Snapshot::kMessage, Isolate::Current()); \
+ darttype& serialized_array = darttype::Handle(); \
+ serialized_array ^= reader.ReadObject(); \
+ for (int i = 0; i < kArrayLength; i++) { \
+ EXPECT_EQ(static_cast<ctype>(i), serialized_array.At(i)); \
+ } \
+ }
+
+
+#define TEST_EXTERNAL_TYPED_ARRAY(darttype, ctype) \
+ { \
+ StackZone zone(Isolate::Current()); \
+ ctype data[] = { 0, 11, 22, 33, 44, 55, 66, 77 }; \
+ intptr_t length = ARRAY_SIZE(data); \
+ External##darttype& array = External##darttype::Handle( \
+ External##darttype::New(data, length, NULL, NULL)); \
+ uint8_t* buffer; \
+ MessageWriter writer(&buffer, &zone_allocator); \
+ writer.WriteMessage(array); \
+ intptr_t buffer_len = writer.BytesWritten(); \
+ SnapshotReader reader(buffer, buffer_len, \
+ Snapshot::kMessage, Isolate::Current()); \
+ darttype& serialized_array = darttype::Handle(); \
+ serialized_array ^= reader.ReadObject(); \
+ for (int i = 0; i < length; i++) { \
+ EXPECT_EQ(static_cast<ctype>(data[i]), serialized_array.At(i)); \
+ } \
+ }
+
+
+TEST_CASE(SerializeTypedArray) {
+ TEST_TYPED_ARRAY(Int8Array, int8_t);
+ TEST_TYPED_ARRAY(Uint8Array, uint8_t);
+ TEST_TYPED_ARRAY(Int16Array, int16_t);
+ TEST_TYPED_ARRAY(Uint16Array, uint16_t);
+ TEST_TYPED_ARRAY(Int32Array, int32_t);
+ TEST_TYPED_ARRAY(Uint32Array, uint32_t);
+ TEST_TYPED_ARRAY(Int64Array, int64_t);
+ TEST_TYPED_ARRAY(Uint64Array, uint64_t);
+ TEST_TYPED_ARRAY(Float32Array, float);
+ TEST_TYPED_ARRAY(Float64Array, double);
+}
+
+
+TEST_CASE(SerializeExternalTypedArray) {
+ TEST_EXTERNAL_TYPED_ARRAY(Int8Array, int8_t);
+ TEST_EXTERNAL_TYPED_ARRAY(Uint8Array, uint8_t);
+ TEST_EXTERNAL_TYPED_ARRAY(Int16Array, int16_t);
+ TEST_EXTERNAL_TYPED_ARRAY(Uint16Array, uint16_t);
+ TEST_EXTERNAL_TYPED_ARRAY(Int32Array, int32_t);
+ TEST_EXTERNAL_TYPED_ARRAY(Uint32Array, uint32_t);
+ TEST_EXTERNAL_TYPED_ARRAY(Int64Array, int64_t);
+ TEST_EXTERNAL_TYPED_ARRAY(Uint64Array, uint64_t);
+ TEST_EXTERNAL_TYPED_ARRAY(Float32Array, float);
+ TEST_EXTERNAL_TYPED_ARRAY(Float64Array, double);
+}
+
+
TEST_CASE(SerializeEmptyByteArray) {
StackZone zone(Isolate::Current());
« no previous file with comments | « vm/raw_object_snapshot.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698