Index: runtime/vm/dart_api_impl_test.cc |
=================================================================== |
--- runtime/vm/dart_api_impl_test.cc (revision 20452) |
+++ runtime/vm/dart_api_impl_test.cc (working copy) |
@@ -1032,14 +1032,16 @@ |
static void TestDirectAccess(Dart_Handle lib, |
Dart_Handle array, |
Dart_TypedData_Type expected_type) { |
+ Dart_Handle result; |
+ |
// Invoke the dart function that sets initial values. |
Dart_Handle dart_args[1]; |
dart_args[0] = array; |
- Dart_Invoke(lib, NewString("setMain"), 1, dart_args); |
+ result = Dart_Invoke(lib, NewString("setMain"), 1, dart_args); |
+ EXPECT_VALID(result); |
// Now Get a direct access to this typed data object and check it's contents. |
const int kLength = 10; |
- Dart_Handle result; |
Dart_TypedData_Type type; |
void* data; |
intptr_t len; |
@@ -1063,7 +1065,8 @@ |
EXPECT_VALID(result); |
// Invoke the dart function in order to check the modified values. |
- Dart_Invoke(lib, NewString("testMain"), 1, dart_args); |
+ result = Dart_Invoke(lib, NewString("testMain"), 1, dart_args); |
+ EXPECT_VALID(result); |
} |
@@ -1075,10 +1078,11 @@ |
" a[i] = i;" |
" }" |
"}\n" |
- "void testMain(var list) {" |
+ "bool testMain(var list) {" |
" for (var i = 0; i < 10; i++) {" |
" Expect.equals((10 + i), list[i]);" |
" }\n" |
+ " return true;" |
"}\n" |
"List main() {" |
" var a = new Int8List(10);" |
@@ -1106,6 +1110,70 @@ |
} |
+TEST_CASE(TypedDataViewDirectAccess) { |
+ const char* kScriptChars = |
+ "import 'dart:typeddata';\n" |
+ "void setMain(var list) {" |
+ " Expect.equals(10, list.length);" |
+ " for (var i = 0; i < 10; i++) {" |
+ " list[i] = i;" |
+ " }" |
+ "}\n" |
+ "bool testMain(var list) {" |
+ " Expect.equals(10, list.length);" |
+ " for (var i = 0; i < 10; i++) {" |
+ " Expect.equals((10 + i), list[i]);" |
+ " }" |
+ " return true;" |
+ "}\n" |
+ "List main() {" |
+ " var a = new Int8List(100);" |
+ " var view = new Int8List.view(a.buffer, 50, 10);" |
+ " return view;" |
+ "}\n"; |
+ // Create a test library and Load up a test script in it. |
+ Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
+ |
+ // Test with a typed data view object. |
+ Dart_Handle list_access_test_obj; |
+ list_access_test_obj = Dart_Invoke(lib, NewString("main"), 0, NULL); |
+ EXPECT_VALID(list_access_test_obj); |
+ TestDirectAccess(lib, list_access_test_obj, kInt8); |
+} |
+ |
+ |
+TEST_CASE(ByteDataDirectAccess) { |
+ const char* kScriptChars = |
+ "import 'dart:typeddata';\n" |
+ "void setMain(var list) {" |
+ " Expect.equals(10, list.length);" |
+ " for (var i = 0; i < 10; i++) {" |
+ " list.setInt8(i, i);" |
+ " }" |
+ "}\n" |
+ "bool testMain(var list) {" |
+ " Expect.equals(10, list.length);" |
+ " for (var i = 0; i < 10; i++) {" |
+ " Expect.equals((10 + i), list.getInt8(i));" |
+ " }" |
+ " return true;" |
+ "}\n" |
+ "ByteData main() {" |
+ " var a = new Int8List(100);" |
+ " var view = new ByteData.view(a.buffer, 50, 10);" |
+ " return view;" |
+ "}\n"; |
+ // Create a test library and Load up a test script in it. |
+ Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
+ |
+ // Test with a typed data view object. |
+ Dart_Handle list_access_test_obj; |
+ list_access_test_obj = Dart_Invoke(lib, NewString("main"), 0, NULL); |
+ EXPECT_VALID(list_access_test_obj); |
+ TestDirectAccess(lib, list_access_test_obj, kByteData); |
+} |
+ |
+ |
static void ExternalTypedDataAccessTests(Dart_Handle obj, |
Dart_TypedData_Type expected_type, |
uint8_t data[], |