Index: runtime/vm/dart_api_impl_test.cc |
=================================================================== |
--- runtime/vm/dart_api_impl_test.cc (revision 17039) |
+++ runtime/vm/dart_api_impl_test.cc (working copy) |
@@ -1089,11 +1089,9 @@ |
} |
-TEST_CASE(ExternalByteArrayAccess) { |
- uint8_t data[] = { 0, 11, 22, 33, 44, 55, 66, 77 }; |
- intptr_t data_length = ARRAY_SIZE(data); |
- |
- Dart_Handle obj = Dart_NewExternalByteArray(data, data_length, NULL, NULL); |
+static void ExternalByteArrayAccessTests(Dart_Handle obj, |
+ uint8_t data[], |
+ intptr_t data_length) { |
EXPECT_VALID(obj); |
EXPECT(Dart_IsByteArray(obj)); |
EXPECT(Dart_IsByteArrayExternal(obj)); |
@@ -1147,6 +1145,61 @@ |
} |
+TEST_CASE(ExternalByteArrayAccess) { |
+ uint8_t data[] = { 0, 11, 22, 33, 44, 55, 66, 77 }; |
+ intptr_t data_length = ARRAY_SIZE(data); |
+ |
+ Dart_Handle obj = Dart_NewExternalByteArray(data, data_length, NULL, NULL); |
+ ExternalByteArrayAccessTests(obj, data, data_length); |
+} |
+ |
+ |
+TEST_CASE(ExternalClampedByteArrayAccess) { |
+ uint8_t data[] = { 0, 11, 22, 33, 44, 55, 66, 77 }; |
+ intptr_t data_length = ARRAY_SIZE(data); |
+ |
+ Dart_Handle obj = Dart_NewExternalClampedByteArray( |
+ data, data_length, NULL, NULL); |
+ ExternalByteArrayAccessTests(obj, data, data_length); |
+} |
+ |
+ |
+TEST_CASE(ExternalUint8ClampedArrayAccess) { |
+ const char* kScriptChars = |
+ "testClamped(List a) {\n" |
+ " if (a[1] != 11) return false;\n" |
+ " a[1] = 3;\n" |
+ " if (a[1] != 3) return false;\n" |
+ " a[1] = -12;\n" |
+ " if (a[1] != 0) return false;\n" |
+ " a[1] = 1200;\n" |
+ " if (a[1] != 255) return false;\n" |
+ " return true;\n" |
+ "}\n"; |
+ |
+ uint8_t data[] = { 0, 11, 22, 33, 44, 55, 66, 77 }; |
+ intptr_t data_length = ARRAY_SIZE(data); |
+ Dart_Handle obj = Dart_NewExternalClampedByteArray( |
+ data, data_length, NULL, NULL); |
+ EXPECT_VALID(obj); |
+ Dart_Handle result; |
+ // Create a test library and Load up a test script in it. |
+ Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
+ Dart_Handle args[1]; |
+ args[0] = obj; |
+ result = Dart_Invoke(lib, NewString("testClamped"), 1, args); |
+ |
+ // Check that result is true. |
+ EXPECT_VALID(result); |
+ EXPECT(Dart_IsBoolean(result)); |
+ bool value = false; |
+ result = Dart_BooleanValue(result, &value); |
+ EXPECT_VALID(result); |
+ EXPECT(value); |
+} |
+ |
+ |
+ |
static void ExternalByteArrayCallbackFinalizer(void* peer) { |
*static_cast<int*>(peer) = 42; |
} |