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

Unified Diff: test/cctest/test-api.cc

Issue 15943002: v8 typed arrays: add DataView type (Closed)
Patch Set: v8 typed arrays: add DataView type, v2 Created 7 years, 7 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: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index 2eb47adf1102a4df3b77ef8246620fb13685c5c0..3c80db1a5bdafb37c9a5ee96fde0ba7be4835a9d 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -2632,6 +2632,65 @@ THREADED_TEST(ArrayBuffer_External) {
}
+THREADED_TEST(DataView) {
+ i::FLAG_harmony_data_view = true;
+ i::FLAG_harmony_typed_arrays = true;
+
+ LocalContext env;
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope handle_scope(isolate);
+
+ char data[1024];
+ const int kByteOffset = 256;
+ const int kByteLength = sizeof(data) - kByteOffset;
+
+ Local<v8::ArrayBuffer> array_buffer =
+ v8::ArrayBuffer::New(data, sizeof(data));
+ Local<v8::DataView> data_view =
+ v8::DataView::New(array_buffer, kByteOffset, kByteLength);
+ HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
+
+ CHECK_EQ(kByteOffset, data_view->ByteOffset());
+ CHECK_EQ(kByteLength, data_view->ByteLength());
+ CHECK_EQ(static_cast<void*>(data + kByteOffset), data_view->Data());
+
+ data_view->SetUint32(0, 0x12345678, false); // Big-endian
+ CHECK_EQ(0x12, data_view->GetUint8(0));
+ CHECK_EQ(0x34, data_view->GetUint8(1));
+ CHECK_EQ(0x56, data_view->GetUint8(2));
+ CHECK_EQ(0x78, data_view->GetUint8(3));
+ CHECK_EQ(0x1234, data_view->GetUint16(0)); // Big-endian
+ CHECK_EQ(0x5678, data_view->GetUint16(2)); // Big-endian
+ CHECK_EQ(0x1234, data_view->GetUint16(0, false)); // Big-endian
+ CHECK_EQ(0x3412, data_view->GetUint16(0, true)); // Little-endian
+ CHECK_EQ(0x5678, data_view->GetUint16(2, false)); // Big-endian
+ CHECK_EQ(0x7856, data_view->GetUint16(2, true)); // Little-endian
+ CHECK_EQ(0x12345678, data_view->GetUint32(0)); // Big-endian
+ CHECK_EQ(0x12345678, data_view->GetUint32(0, false)); // Big-endian
+ CHECK_EQ(0x78563412, data_view->GetUint32(0, true)); // Little-endian
+
+ data_view->SetUint32(0, 0x12345678, true); // Little-endian
+ CHECK_EQ(0x78, data_view->GetUint8(0));
+ CHECK_EQ(0x56, data_view->GetUint8(1));
+ CHECK_EQ(0x34, data_view->GetUint8(2));
+ CHECK_EQ(0x12, data_view->GetUint8(3));
+ CHECK_EQ(0x7856, data_view->GetUint16(0)); // Big-endian
+ CHECK_EQ(0x3412, data_view->GetUint16(2)); // Big-endian
+ CHECK_EQ(0x7856, data_view->GetUint16(0, false)); // Big-endian
+ CHECK_EQ(0x5678, data_view->GetUint16(0, true)); // Little-endian
+ CHECK_EQ(0x3412, data_view->GetUint16(2, false)); // Big-endian
+ CHECK_EQ(0x1234, data_view->GetUint16(2, true)); // Little-endian
+ CHECK_EQ(0x78563412, data_view->GetUint32(0)); // Big-endian.
+ CHECK_EQ(0x78563412, data_view->GetUint32(0, false)); // Big-endian.
+ CHECK_EQ(0x12345678, data_view->GetUint32(0, true)); // Little-endian.
+
+ data_view->SetFloat32(0, 123.456f);
+ data_view->SetFloat64(4, 123.456);
+ CHECK_EQ(123.456f, data_view->GetFloat32(0));
+ CHECK_EQ(123.456, data_view->GetFloat64(4));
+}
+
+
THREADED_TEST(HiddenProperties) {
LocalContext env;
v8::HandleScope scope(env->GetIsolate());

Powered by Google App Engine
This is Rietveld 408576698