| Index: test/cctest/test-api.cc
|
| ===================================================================
|
| --- test/cctest/test-api.cc (revision 4855)
|
| +++ test/cctest/test-api.cc (working copy)
|
| @@ -9637,32 +9637,51 @@
|
| }
|
|
|
|
|
| -template <class ExternalArrayClass, class ElementType>
|
| -static void ExternalArrayTestHelper(v8::ExternalArrayType array_type,
|
| - int64_t low,
|
| - int64_t high) {
|
| +THREADED_TEST(PixelArrayInfo) {
|
| v8::HandleScope scope;
|
| LocalContext context;
|
| - const int kElementCount = 40;
|
| - int element_size = 0;
|
| + for (int size = 0; size < 100; size += 10) {
|
| + uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(size));
|
| + v8::Handle<v8::Object> obj = v8::Object::New();
|
| + obj->SetIndexedPropertiesToPixelData(pixel_data, size);
|
| + CHECK(obj->HasIndexedPropertiesInPixelData());
|
| + CHECK_EQ(pixel_data, obj->GetIndexedPropertiesPixelData());
|
| + CHECK_EQ(size, obj->GetIndexedPropertiesPixelDataLength());
|
| + free(pixel_data);
|
| + }
|
| +}
|
| +
|
| +
|
| +static int ExternalArrayElementSize(v8::ExternalArrayType array_type) {
|
| switch (array_type) {
|
| case v8::kExternalByteArray:
|
| case v8::kExternalUnsignedByteArray:
|
| - element_size = 1;
|
| + return 1;
|
| break;
|
| case v8::kExternalShortArray:
|
| case v8::kExternalUnsignedShortArray:
|
| - element_size = 2;
|
| + return 2;
|
| break;
|
| case v8::kExternalIntArray:
|
| case v8::kExternalUnsignedIntArray:
|
| case v8::kExternalFloatArray:
|
| - element_size = 4;
|
| + return 4;
|
| break;
|
| default:
|
| UNREACHABLE();
|
| - break;
|
| + return -1;
|
| }
|
| +}
|
| +
|
| +
|
| +template <class ExternalArrayClass, class ElementType>
|
| +static void ExternalArrayTestHelper(v8::ExternalArrayType array_type,
|
| + int64_t low,
|
| + int64_t high) {
|
| + v8::HandleScope scope;
|
| + LocalContext context;
|
| + const int kElementCount = 40;
|
| + int element_size = ExternalArrayElementSize(array_type);
|
| ElementType* array_data =
|
| static_cast<ElementType*>(malloc(kElementCount * element_size));
|
| i::Handle<ExternalArrayClass> array =
|
| @@ -10043,6 +10062,35 @@
|
| }
|
|
|
|
|
| +void ExternalArrayInfoTestHelper(v8::ExternalArrayType array_type) {
|
| + v8::HandleScope scope;
|
| + LocalContext context;
|
| + for (int size = 0; size < 100; size += 10) {
|
| + int element_size = ExternalArrayElementSize(array_type);
|
| + void* external_data = malloc(size * element_size);
|
| + v8::Handle<v8::Object> obj = v8::Object::New();
|
| + obj->SetIndexedPropertiesToExternalArrayData(
|
| + external_data, array_type, size);
|
| + CHECK(obj->HasIndexedPropertiesInExternalArrayData());
|
| + CHECK_EQ(external_data, obj->GetIndexedPropertiesExternalArrayData());
|
| + CHECK_EQ(array_type, obj->GetIndexedPropertiesExternalArrayDataType());
|
| + CHECK_EQ(size, obj->GetIndexedPropertiesExternalArrayDataLength());
|
| + free(external_data);
|
| + }
|
| +}
|
| +
|
| +
|
| +THREADED_TEST(ExternalArrayInfo) {
|
| + ExternalArrayInfoTestHelper(v8::kExternalByteArray);
|
| + ExternalArrayInfoTestHelper(v8::kExternalUnsignedByteArray);
|
| + ExternalArrayInfoTestHelper(v8::kExternalShortArray);
|
| + ExternalArrayInfoTestHelper(v8::kExternalUnsignedShortArray);
|
| + ExternalArrayInfoTestHelper(v8::kExternalIntArray);
|
| + ExternalArrayInfoTestHelper(v8::kExternalUnsignedIntArray);
|
| + ExternalArrayInfoTestHelper(v8::kExternalFloatArray);
|
| +}
|
| +
|
| +
|
| THREADED_TEST(ScriptContextDependence) {
|
| v8::HandleScope scope;
|
| LocalContext c1;
|
|
|