Chromium Code Reviews| 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()); |