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; |