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

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

Issue 15943002: v8 typed arrays: add DataView type (Closed)
Patch Set: 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 9311f2221370231ca41e1edf089798e144a31071..732002125863881c29d6b1b462b91557b01bd193 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -2610,6 +2610,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));
bnoordhuis 2013/05/23 22:59:04 But if you decide to keep the API functions, there
+}
+
+
THREADED_TEST(HiddenProperties) {
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
« src/runtime.cc ('K') | « src/utils.h ('k') | test/mjsunit/harmony/dataview.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698