| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "include/dart_api.h" | 5 #include "include/dart_api.h" |
| 6 | 6 |
| 7 #include "vm/assert.h" | 7 #include "vm/assert.h" |
| 8 #include "vm/dart_api_impl.h" | 8 #include "vm/dart_api_impl.h" |
| 9 #include "vm/dart_api_state.h" | 9 #include "vm/dart_api_state.h" |
| 10 #include "vm/unit_test.h" | 10 #include "vm/unit_test.h" |
| 11 #include "vm/utils.h" | 11 #include "vm/utils.h" |
| 12 #include "vm/verifier.h" | 12 #include "vm/verifier.h" |
| 13 | 13 |
| 14 namespace dart { | 14 namespace dart { |
| 15 | 15 |
| 16 UNIT_TEST_CASE(BooleanValues) { | 16 UNIT_TEST_CASE(BooleanValues) { |
| 17 Dart_CreateIsolate(NULL, NULL); | 17 Dart_CreateIsolate(NULL, NULL); |
| 18 Dart_EnterScope(); // Enter a Dart API scope for the unit test. | 18 Dart_EnterScope(); // Enter a Dart API scope for the unit test. |
| 19 | 19 |
| 20 Dart_Handle str = Dart_NewString("test"); | 20 Dart_Handle str = Dart_NewString("test"); |
| 21 EXPECT(!Dart_IsBoolean(str)); | 21 EXPECT(!Dart_IsBoolean(str)); |
| 22 Dart_Handle val1 = Dart_NewBoolean(true); | 22 Dart_Handle val1 = Dart_NewBoolean(true); |
| 23 EXPECT(Dart_IsBoolean(val1)); | 23 EXPECT(Dart_IsBoolean(val1)); |
| 24 Dart_Handle val2 = Dart_NewBoolean(false); | 24 Dart_Handle val2 = Dart_NewBoolean(false); |
| 25 EXPECT(Dart_IsBoolean(val2)); | 25 EXPECT(Dart_IsBoolean(val2)); |
| 26 bool value = false; | 26 bool value = false; |
| 27 Dart_Handle result = Dart_BooleanValue(val1, &value); | 27 Dart_Handle result = Dart_BooleanValue(val1, &value); |
| 28 EXPECT(Dart_IsValid(result) && value); | 28 EXPECT_VALID(result); |
| 29 EXPECT(value); |
| 29 result = Dart_BooleanValue(val2, &value); | 30 result = Dart_BooleanValue(val2, &value); |
| 30 EXPECT(Dart_IsValid(result) && !value); | 31 EXPECT_VALID(result); |
| 32 EXPECT(!value); |
| 31 | 33 |
| 32 Dart_ExitScope(); // Exit the Dart API scope. | 34 Dart_ExitScope(); // Exit the Dart API scope. |
| 33 Dart_ShutdownIsolate(); | 35 Dart_ShutdownIsolate(); |
| 34 } | 36 } |
| 35 | 37 |
| 36 | 38 |
| 37 UNIT_TEST_CASE(DoubleValues) { | 39 UNIT_TEST_CASE(DoubleValues) { |
| 38 Dart_CreateIsolate(NULL, NULL); | 40 Dart_CreateIsolate(NULL, NULL); |
| 39 Dart_EnterScope(); // Enter a Dart API scope for the unit test. | 41 Dart_EnterScope(); // Enter a Dart API scope for the unit test. |
| 40 | 42 |
| 41 const double kDoubleVal1 = 201.29; | 43 const double kDoubleVal1 = 201.29; |
| 42 const double kDoubleVal2 = 101.19; | 44 const double kDoubleVal2 = 101.19; |
| 43 Dart_Handle val1 = Dart_NewDouble(kDoubleVal1); | 45 Dart_Handle val1 = Dart_NewDouble(kDoubleVal1); |
| 44 EXPECT(Dart_IsDouble(val1)); | 46 EXPECT(Dart_IsDouble(val1)); |
| 45 Dart_Handle val2 = Dart_NewDouble(kDoubleVal2); | 47 Dart_Handle val2 = Dart_NewDouble(kDoubleVal2); |
| 46 EXPECT(Dart_IsDouble(val2)); | 48 EXPECT(Dart_IsDouble(val2)); |
| 47 double out1, out2; | 49 double out1, out2; |
| 48 Dart_Handle result = Dart_DoubleValue(val1, &out1); | 50 Dart_Handle result = Dart_DoubleValue(val1, &out1); |
| 49 EXPECT(Dart_IsValid(result)); | 51 EXPECT_VALID(result); |
| 50 EXPECT_EQ(kDoubleVal1, out1); | 52 EXPECT_EQ(kDoubleVal1, out1); |
| 51 result = Dart_DoubleValue(val2, &out2); | 53 result = Dart_DoubleValue(val2, &out2); |
| 52 EXPECT(Dart_IsValid(result)); | 54 EXPECT_VALID(result); |
| 53 EXPECT_EQ(kDoubleVal2, out2); | 55 EXPECT_EQ(kDoubleVal2, out2); |
| 54 | 56 |
| 55 Dart_ExitScope(); // Exit the Dart API scope. | 57 Dart_ExitScope(); // Exit the Dart API scope. |
| 56 Dart_ShutdownIsolate(); | 58 Dart_ShutdownIsolate(); |
| 57 } | 59 } |
| 58 | 60 |
| 59 | 61 |
| 60 #if defined(TARGET_ARCH_IA32) // only ia32 can run execution tests. | 62 #if defined(TARGET_ARCH_IA32) // only ia32 can run execution tests. |
| 61 | 63 |
| 62 UNIT_TEST_CASE(NumberValues) { | 64 UNIT_TEST_CASE(NumberValues) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 77 // Create a test library and Load up a test script in it. | 79 // Create a test library and Load up a test script in it. |
| 78 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 80 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 79 | 81 |
| 80 Dart_Handle class_name = Dart_NewString("NumberValuesHelper"); | 82 Dart_Handle class_name = Dart_NewString("NumberValuesHelper"); |
| 81 // Check int case. | 83 // Check int case. |
| 82 result = Dart_InvokeStatic(lib, | 84 result = Dart_InvokeStatic(lib, |
| 83 class_name, | 85 class_name, |
| 84 Dart_NewString("getInt"), | 86 Dart_NewString("getInt"), |
| 85 0, | 87 0, |
| 86 NULL); | 88 NULL); |
| 87 EXPECT(Dart_IsValid(result)); | 89 EXPECT_VALID(result); |
| 88 EXPECT(!Dart_ExceptionOccurred(result)); | 90 EXPECT(!Dart_ExceptionOccurred(result)); |
| 89 EXPECT(Dart_IsNumber(result)); | 91 EXPECT(Dart_IsNumber(result)); |
| 90 | 92 |
| 91 // Check double case. | 93 // Check double case. |
| 92 result = Dart_InvokeStatic(lib, | 94 result = Dart_InvokeStatic(lib, |
| 93 class_name, | 95 class_name, |
| 94 Dart_NewString("getDouble"), | 96 Dart_NewString("getDouble"), |
| 95 0, | 97 0, |
| 96 NULL); | 98 NULL); |
| 97 EXPECT(Dart_IsValid(result)); | 99 EXPECT_VALID(result); |
| 98 EXPECT(!Dart_ExceptionOccurred(result)); | 100 EXPECT(!Dart_ExceptionOccurred(result)); |
| 99 EXPECT(Dart_IsNumber(result)); | 101 EXPECT(Dart_IsNumber(result)); |
| 100 | 102 |
| 101 // Check bool case. | 103 // Check bool case. |
| 102 result = Dart_InvokeStatic(lib, | 104 result = Dart_InvokeStatic(lib, |
| 103 class_name, | 105 class_name, |
| 104 Dart_NewString("getBool"), | 106 Dart_NewString("getBool"), |
| 105 0, | 107 0, |
| 106 NULL); | 108 NULL); |
| 107 EXPECT(Dart_IsValid(result)); | 109 EXPECT_VALID(result); |
| 108 EXPECT(!Dart_ExceptionOccurred(result)); | 110 EXPECT(!Dart_ExceptionOccurred(result)); |
| 109 EXPECT(!Dart_IsNumber(result)); | 111 EXPECT(!Dart_IsNumber(result)); |
| 110 | 112 |
| 111 // Check null case. | 113 // Check null case. |
| 112 result = Dart_InvokeStatic(lib, | 114 result = Dart_InvokeStatic(lib, |
| 113 class_name, | 115 class_name, |
| 114 Dart_NewString("getNull"), | 116 Dart_NewString("getNull"), |
| 115 0, | 117 0, |
| 116 NULL); | 118 NULL); |
| 117 EXPECT(Dart_IsValid(result)); | 119 EXPECT_VALID(result); |
| 118 EXPECT(!Dart_ExceptionOccurred(result)); | 120 EXPECT(!Dart_ExceptionOccurred(result)); |
| 119 EXPECT(!Dart_IsNumber(result)); | 121 EXPECT(!Dart_IsNumber(result)); |
| 120 | 122 |
| 121 Dart_ExitScope(); // Exit the Dart API scope. | 123 Dart_ExitScope(); // Exit the Dart API scope. |
| 122 } | 124 } |
| 123 Dart_ShutdownIsolate(); | 125 Dart_ShutdownIsolate(); |
| 124 } | 126 } |
| 125 | 127 |
| 126 #endif | 128 #endif |
| 127 | 129 |
| 128 | 130 |
| 129 UNIT_TEST_CASE(IntegerValues) { | 131 UNIT_TEST_CASE(IntegerValues) { |
| 130 Dart_CreateIsolate(NULL, NULL); | 132 Dart_CreateIsolate(NULL, NULL); |
| 131 Dart_EnterScope(); // Enter a Dart API scope for the unit test. | 133 Dart_EnterScope(); // Enter a Dart API scope for the unit test. |
| 132 | 134 |
| 133 const int64_t kIntegerVal1 = 100; | 135 const int64_t kIntegerVal1 = 100; |
| 134 const int64_t kIntegerVal2 = 0xffffffff; | 136 const int64_t kIntegerVal2 = 0xffffffff; |
| 135 const char* kIntegerVal3 = "0x123456789123456789123456789"; | 137 const char* kIntegerVal3 = "0x123456789123456789123456789"; |
| 136 | 138 |
| 137 Dart_Handle val1 = Dart_NewInteger(kIntegerVal1); | 139 Dart_Handle val1 = Dart_NewInteger(kIntegerVal1); |
| 138 EXPECT(Dart_IsInteger(val1)); | 140 EXPECT(Dart_IsInteger(val1)); |
| 139 bool fits = false; | 141 bool fits = false; |
| 140 Dart_Handle result = Dart_IntegerFitsIntoInt64(val1, &fits); | 142 Dart_Handle result = Dart_IntegerFitsIntoInt64(val1, &fits); |
| 141 EXPECT(Dart_IsValid(result)); | 143 EXPECT_VALID(result); |
| 142 EXPECT(fits); | 144 EXPECT(fits); |
| 143 | 145 |
| 144 Dart_Handle val2 = Dart_NewInteger(kIntegerVal2); | 146 Dart_Handle val2 = Dart_NewInteger(kIntegerVal2); |
| 145 EXPECT(Dart_IsInteger(val2)); | 147 EXPECT(Dart_IsInteger(val2)); |
| 146 result = Dart_IntegerFitsIntoInt64(val2, &fits); | 148 result = Dart_IntegerFitsIntoInt64(val2, &fits); |
| 147 EXPECT(Dart_IsValid(result)); | 149 EXPECT_VALID(result); |
| 148 EXPECT(fits); | 150 EXPECT(fits); |
| 149 | 151 |
| 150 Dart_Handle val3 = Dart_NewIntegerFromHexCString(kIntegerVal3); | 152 Dart_Handle val3 = Dart_NewIntegerFromHexCString(kIntegerVal3); |
| 151 EXPECT(Dart_IsInteger(val3)); | 153 EXPECT(Dart_IsInteger(val3)); |
| 152 result = Dart_IntegerFitsIntoInt64(val3, &fits); | 154 result = Dart_IntegerFitsIntoInt64(val3, &fits); |
| 153 EXPECT(Dart_IsValid(result)); | 155 EXPECT_VALID(result); |
| 154 EXPECT(!fits); | 156 EXPECT(!fits); |
| 155 | 157 |
| 156 int64_t out = 0; | 158 int64_t out = 0; |
| 157 result = Dart_IntegerValue(val1, &out); | 159 result = Dart_IntegerValue(val1, &out); |
| 158 EXPECT(Dart_IsValid(result)); | 160 EXPECT_VALID(result); |
| 159 EXPECT_EQ(kIntegerVal1, out); | 161 EXPECT_EQ(kIntegerVal1, out); |
| 160 | 162 |
| 161 result = Dart_IntegerValue(val2, &out); | 163 result = Dart_IntegerValue(val2, &out); |
| 162 EXPECT(Dart_IsValid(result)); | 164 EXPECT_VALID(result); |
| 163 EXPECT_EQ(kIntegerVal2, out); | 165 EXPECT_EQ(kIntegerVal2, out); |
| 164 | 166 |
| 165 const char* chars = NULL; | 167 const char* chars = NULL; |
| 166 result = Dart_IntegerValueHexCString(val3, &chars); | 168 result = Dart_IntegerValueHexCString(val3, &chars); |
| 167 EXPECT(Dart_IsValid(result)); | 169 EXPECT_VALID(result); |
| 168 EXPECT(!strcmp(kIntegerVal3, chars)); | 170 EXPECT(!strcmp(kIntegerVal3, chars)); |
| 169 | 171 |
| 170 Dart_ExitScope(); // Exit the Dart API scope. | 172 Dart_ExitScope(); // Exit the Dart API scope. |
| 171 Dart_ShutdownIsolate(); | 173 Dart_ShutdownIsolate(); |
| 172 } | 174 } |
| 173 | 175 |
| 174 | 176 |
| 175 UNIT_TEST_CASE(ArrayValues) { | 177 UNIT_TEST_CASE(ArrayValues) { |
| 176 Dart_CreateIsolate(NULL, NULL); | 178 Dart_CreateIsolate(NULL, NULL); |
| 177 Dart_EnterScope(); // Enter a Dart API scope for the unit test. | 179 Dart_EnterScope(); // Enter a Dart API scope for the unit test. |
| 178 | 180 |
| 179 const int kArrayLength = 10; | 181 const int kArrayLength = 10; |
| 180 Dart_Handle str = Dart_NewString("test"); | 182 Dart_Handle str = Dart_NewString("test"); |
| 181 EXPECT(!Dart_IsArray(str)); | 183 EXPECT(!Dart_IsArray(str)); |
| 182 Dart_Handle val = Dart_NewArray(kArrayLength); | 184 Dart_Handle val = Dart_NewArray(kArrayLength); |
| 183 EXPECT(Dart_IsArray(val)); | 185 EXPECT(Dart_IsArray(val)); |
| 184 intptr_t len = 0; | 186 intptr_t len = 0; |
| 185 Dart_Handle result = Dart_GetLength(val, &len); | 187 Dart_Handle result = Dart_GetLength(val, &len); |
| 186 EXPECT(Dart_IsValid(result)); | 188 EXPECT_VALID(result); |
| 187 EXPECT_EQ(kArrayLength, len); | 189 EXPECT_EQ(kArrayLength, len); |
| 188 | 190 |
| 189 // Check invalid array access. | 191 // Check invalid array access. |
| 190 result = Dart_ArraySetAt(val, (kArrayLength + 10), Dart_NewInteger(10)); | 192 result = Dart_ArraySetAt(val, (kArrayLength + 10), Dart_NewInteger(10)); |
| 191 EXPECT(!Dart_IsValid(result)); | 193 EXPECT(!Dart_IsValid(result)); |
| 192 result = Dart_ArraySetAt(val, -10, Dart_NewInteger(10)); | 194 result = Dart_ArraySetAt(val, -10, Dart_NewInteger(10)); |
| 193 EXPECT(!Dart_IsValid(result)); | 195 EXPECT(!Dart_IsValid(result)); |
| 194 result = Dart_ArrayGetAt(val, (kArrayLength + 10)); | 196 result = Dart_ArrayGetAt(val, (kArrayLength + 10)); |
| 195 EXPECT(!Dart_IsValid(result)); | 197 EXPECT(!Dart_IsValid(result)); |
| 196 result = Dart_ArrayGetAt(val, -10); | 198 result = Dart_ArrayGetAt(val, -10); |
| 197 EXPECT(!Dart_IsValid(result)); | 199 EXPECT(!Dart_IsValid(result)); |
| 198 | 200 |
| 199 for (int i = 0; i < kArrayLength; i++) { | 201 for (int i = 0; i < kArrayLength; i++) { |
| 200 result = Dart_ArraySetAt(val, i, Dart_NewInteger(i)); | 202 result = Dart_ArraySetAt(val, i, Dart_NewInteger(i)); |
| 201 EXPECT(Dart_IsValid(result)); | 203 EXPECT_VALID(result); |
| 202 } | 204 } |
| 203 for (int i = 0; i < kArrayLength; i++) { | 205 for (int i = 0; i < kArrayLength; i++) { |
| 204 result = Dart_ArrayGetAt(val, i); | 206 result = Dart_ArrayGetAt(val, i); |
| 205 EXPECT(Dart_IsValid(result)); | 207 EXPECT_VALID(result); |
| 206 int64_t value; | 208 int64_t value; |
| 207 result = Dart_IntegerValue(result, &value); | 209 result = Dart_IntegerValue(result, &value); |
| 208 EXPECT(Dart_IsValid(result)); | 210 EXPECT_VALID(result); |
| 209 EXPECT_EQ(i, value); | 211 EXPECT_EQ(i, value); |
| 210 } | 212 } |
| 211 | 213 |
| 212 Dart_ExitScope(); // Exit the Dart API scope. | 214 Dart_ExitScope(); // Exit the Dart API scope. |
| 213 Dart_ShutdownIsolate(); | 215 Dart_ShutdownIsolate(); |
| 214 } | 216 } |
| 215 | 217 |
| 216 | 218 |
| 217 // Unit test for entering a scope, creating a local handle and exiting | 219 // Unit test for entering a scope, creating a local handle and exiting |
| 218 // the scope. | 220 // the scope. |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 | 499 |
| 498 // Create a test library and Load up a test script in it. | 500 // Create a test library and Load up a test script in it. |
| 499 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 501 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 500 | 502 |
| 501 // Invoke a function which returns an object. | 503 // Invoke a function which returns an object. |
| 502 Dart_Handle retobj = Dart_InvokeStatic(lib, | 504 Dart_Handle retobj = Dart_InvokeStatic(lib, |
| 503 Dart_NewString("FieldsTest"), | 505 Dart_NewString("FieldsTest"), |
| 504 Dart_NewString("testMain"), | 506 Dart_NewString("testMain"), |
| 505 0, | 507 0, |
| 506 NULL); | 508 NULL); |
| 507 EXPECT(Dart_IsValid(retobj)); | 509 EXPECT_VALID(retobj); |
| 508 EXPECT(!Dart_ExceptionOccurred(retobj)); | 510 EXPECT(!Dart_ExceptionOccurred(retobj)); |
| 509 | 511 |
| 510 // Now access and set various static fields of Fields class. | 512 // Now access and set various static fields of Fields class. |
| 511 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("Fields")); | 513 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("Fields")); |
| 512 EXPECT(Dart_IsValid(cls)); | 514 EXPECT_VALID(cls); |
| 513 result = Dart_GetStaticField(cls, Dart_NewString("fld1")); | 515 result = Dart_GetStaticField(cls, Dart_NewString("fld1")); |
| 514 EXPECT(!Dart_IsValid(result)); | 516 EXPECT(!Dart_IsValid(result)); |
| 515 result = Dart_GetInstanceField(retobj, Dart_NewString("fld3")); | 517 result = Dart_GetInstanceField(retobj, Dart_NewString("fld3")); |
| 516 EXPECT(!Dart_IsValid(result)); | 518 EXPECT(!Dart_IsValid(result)); |
| 517 result = Dart_GetStaticField(cls, Dart_NewString("fld4")); | 519 result = Dart_GetStaticField(cls, Dart_NewString("fld4")); |
| 518 EXPECT(Dart_IsValid(result)); | 520 EXPECT_VALID(result); |
| 519 int64_t value = 0; | 521 int64_t value = 0; |
| 520 result = Dart_IntegerValue(result, &value); | 522 result = Dart_IntegerValue(result, &value); |
| 521 EXPECT_EQ(10, value); | 523 EXPECT_EQ(10, value); |
| 522 result = Dart_SetStaticField(cls, | 524 result = Dart_SetStaticField(cls, |
| 523 Dart_NewString("fld4"), | 525 Dart_NewString("fld4"), |
| 524 Dart_NewInteger(20)); | 526 Dart_NewInteger(20)); |
| 525 EXPECT(!Dart_IsValid(result)); | 527 EXPECT(!Dart_IsValid(result)); |
| 526 result = Dart_GetStaticField(cls, Dart_NewString("fld3")); | 528 result = Dart_GetStaticField(cls, Dart_NewString("fld3")); |
| 527 EXPECT(Dart_IsValid(result)); | 529 EXPECT_VALID(result); |
| 528 result = Dart_SetStaticField(cls, | 530 result = Dart_SetStaticField(cls, |
| 529 Dart_NewString("fld3"), | 531 Dart_NewString("fld3"), |
| 530 Dart_NewInteger(200)); | 532 Dart_NewInteger(200)); |
| 531 EXPECT(Dart_IsValid(result)); | 533 EXPECT_VALID(result); |
| 532 result = Dart_IntegerValue(result, &value); | 534 result = Dart_IntegerValue(result, &value); |
| 533 EXPECT_EQ(200, value); | 535 EXPECT_EQ(200, value); |
| 534 | 536 |
| 535 // Now access and set various instance fields of the returned object. | 537 // Now access and set various instance fields of the returned object. |
| 536 result = Dart_GetInstanceField(retobj, Dart_NewString("fld3")); | 538 result = Dart_GetInstanceField(retobj, Dart_NewString("fld3")); |
| 537 EXPECT(!Dart_IsValid(result)); | 539 EXPECT(!Dart_IsValid(result)); |
| 538 result = Dart_GetInstanceField(retobj, Dart_NewString("fld1")); | 540 result = Dart_GetInstanceField(retobj, Dart_NewString("fld1")); |
| 539 EXPECT(Dart_IsValid(result)); | 541 EXPECT_VALID(result); |
| 540 result = Dart_IntegerValue(result, &value); | 542 result = Dart_IntegerValue(result, &value); |
| 541 EXPECT_EQ(10, value); | 543 EXPECT_EQ(10, value); |
| 542 result = Dart_GetInstanceField(retobj, Dart_NewString("fld2")); | 544 result = Dart_GetInstanceField(retobj, Dart_NewString("fld2")); |
| 543 EXPECT(Dart_IsValid(result)); | 545 EXPECT_VALID(result); |
| 544 result = Dart_IntegerValue(result, &value); | 546 result = Dart_IntegerValue(result, &value); |
| 545 EXPECT_EQ(20, value); | 547 EXPECT_EQ(20, value); |
| 546 result = Dart_SetInstanceField(retobj, | 548 result = Dart_SetInstanceField(retobj, |
| 547 Dart_NewString("fld2"), | 549 Dart_NewString("fld2"), |
| 548 Dart_NewInteger(40)); | 550 Dart_NewInteger(40)); |
| 549 EXPECT(!Dart_IsValid(result)); | 551 EXPECT(!Dart_IsValid(result)); |
| 550 result = Dart_SetInstanceField(retobj, | 552 result = Dart_SetInstanceField(retobj, |
| 551 Dart_NewString("fld1"), | 553 Dart_NewString("fld1"), |
| 552 Dart_NewInteger(40)); | 554 Dart_NewInteger(40)); |
| 553 EXPECT(Dart_IsValid(result)); | 555 EXPECT_VALID(result); |
| 554 result = Dart_GetInstanceField(retobj, Dart_NewString("fld1")); | 556 result = Dart_GetInstanceField(retobj, Dart_NewString("fld1")); |
| 555 EXPECT(Dart_IsValid(result)); | 557 EXPECT_VALID(result); |
| 556 result = Dart_IntegerValue(result, &value); | 558 result = Dart_IntegerValue(result, &value); |
| 557 EXPECT_EQ(40, value); | 559 EXPECT_EQ(40, value); |
| 558 | 560 |
| 559 Dart_ExitScope(); // Exit the Dart API scope. | 561 Dart_ExitScope(); // Exit the Dart API scope. |
| 560 } | 562 } |
| 561 Dart_ShutdownIsolate(); | 563 Dart_ShutdownIsolate(); |
| 562 } | 564 } |
| 563 | 565 |
| 564 | 566 |
| 565 UNIT_TEST_CASE(HiddenFieldAccess) { | 567 UNIT_TEST_CASE(HiddenFieldAccess) { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 585 | 587 |
| 586 // Load up a test script which extends the native wrapper class. | 588 // Load up a test script which extends the native wrapper class. |
| 587 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 589 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 588 | 590 |
| 589 // Invoke a function which returns an object. | 591 // Invoke a function which returns an object. |
| 590 Dart_Handle retobj = Dart_InvokeStatic(lib, | 592 Dart_Handle retobj = Dart_InvokeStatic(lib, |
| 591 Dart_NewString("HiddenFieldsTest"), | 593 Dart_NewString("HiddenFieldsTest"), |
| 592 Dart_NewString("testMain"), | 594 Dart_NewString("testMain"), |
| 593 0, | 595 0, |
| 594 NULL); | 596 NULL); |
| 595 EXPECT(Dart_IsValid(retobj)); | 597 EXPECT_VALID(retobj); |
| 596 EXPECT(!Dart_ExceptionOccurred(retobj)); | 598 EXPECT(!Dart_ExceptionOccurred(retobj)); |
| 597 | 599 |
| 598 // Now access and set various static fields of HiddenFields class. | 600 // Now access and set various static fields of HiddenFields class. |
| 599 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("HiddenFields")); | 601 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("HiddenFields")); |
| 600 EXPECT(Dart_IsValid(cls)); | 602 EXPECT_VALID(cls); |
| 601 result = Dart_GetStaticField(cls, Dart_NewString("_fld1")); | 603 result = Dart_GetStaticField(cls, Dart_NewString("_fld1")); |
| 602 EXPECT(!Dart_IsValid(result)); | 604 EXPECT(!Dart_IsValid(result)); |
| 603 result = Dart_GetInstanceField(retobj, Dart_NewString("_fld3")); | 605 result = Dart_GetInstanceField(retobj, Dart_NewString("_fld3")); |
| 604 EXPECT(!Dart_IsValid(result)); | 606 EXPECT(!Dart_IsValid(result)); |
| 605 result = Dart_GetStaticField(cls, Dart_NewString("_fld4")); | 607 result = Dart_GetStaticField(cls, Dart_NewString("_fld4")); |
| 606 EXPECT(Dart_IsValid(result)); | 608 EXPECT_VALID(result); |
| 607 int64_t value = 0; | 609 int64_t value = 0; |
| 608 result = Dart_IntegerValue(result, &value); | 610 result = Dart_IntegerValue(result, &value); |
| 609 EXPECT_EQ(10, value); | 611 EXPECT_EQ(10, value); |
| 610 result = Dart_SetStaticField(cls, | 612 result = Dart_SetStaticField(cls, |
| 611 Dart_NewString("_fld4"), | 613 Dart_NewString("_fld4"), |
| 612 Dart_NewInteger(20)); | 614 Dart_NewInteger(20)); |
| 613 EXPECT(!Dart_IsValid(result)); | 615 EXPECT(!Dart_IsValid(result)); |
| 614 result = Dart_GetStaticField(cls, Dart_NewString("_fld3")); | 616 result = Dart_GetStaticField(cls, Dart_NewString("_fld3")); |
| 615 EXPECT(Dart_IsValid(result)); | 617 EXPECT_VALID(result); |
| 616 result = Dart_SetStaticField(cls, | 618 result = Dart_SetStaticField(cls, |
| 617 Dart_NewString("_fld3"), | 619 Dart_NewString("_fld3"), |
| 618 Dart_NewInteger(200)); | 620 Dart_NewInteger(200)); |
| 619 EXPECT(Dart_IsValid(result)); | 621 EXPECT_VALID(result); |
| 620 result = Dart_IntegerValue(result, &value); | 622 result = Dart_IntegerValue(result, &value); |
| 621 EXPECT_EQ(200, value); | 623 EXPECT_EQ(200, value); |
| 622 | 624 |
| 623 // Now access and set various instance fields of the returned object. | 625 // Now access and set various instance fields of the returned object. |
| 624 result = Dart_GetInstanceField(retobj, Dart_NewString("_fld3")); | 626 result = Dart_GetInstanceField(retobj, Dart_NewString("_fld3")); |
| 625 EXPECT(!Dart_IsValid(result)); | 627 EXPECT(!Dart_IsValid(result)); |
| 626 result = Dart_GetInstanceField(retobj, Dart_NewString("_fld1")); | 628 result = Dart_GetInstanceField(retobj, Dart_NewString("_fld1")); |
| 627 EXPECT(Dart_IsValid(result)); | 629 EXPECT_VALID(result); |
| 628 result = Dart_IntegerValue(result, &value); | 630 result = Dart_IntegerValue(result, &value); |
| 629 EXPECT_EQ(10, value); | 631 EXPECT_EQ(10, value); |
| 630 result = Dart_GetInstanceField(retobj, Dart_NewString("_fld2")); | 632 result = Dart_GetInstanceField(retobj, Dart_NewString("_fld2")); |
| 631 EXPECT(Dart_IsValid(result)); | 633 EXPECT_VALID(result); |
| 632 result = Dart_IntegerValue(result, &value); | 634 result = Dart_IntegerValue(result, &value); |
| 633 EXPECT_EQ(20, value); | 635 EXPECT_EQ(20, value); |
| 634 result = Dart_SetInstanceField(retobj, | 636 result = Dart_SetInstanceField(retobj, |
| 635 Dart_NewString("_fld2"), | 637 Dart_NewString("_fld2"), |
| 636 Dart_NewInteger(40)); | 638 Dart_NewInteger(40)); |
| 637 EXPECT(!Dart_IsValid(result)); | 639 EXPECT(!Dart_IsValid(result)); |
| 638 result = Dart_SetInstanceField(retobj, | 640 result = Dart_SetInstanceField(retobj, |
| 639 Dart_NewString("_fld1"), | 641 Dart_NewString("_fld1"), |
| 640 Dart_NewInteger(40)); | 642 Dart_NewInteger(40)); |
| 641 EXPECT(Dart_IsValid(result)); | 643 EXPECT_VALID(result); |
| 642 result = Dart_GetInstanceField(retobj, Dart_NewString("_fld1")); | 644 result = Dart_GetInstanceField(retobj, Dart_NewString("_fld1")); |
| 643 EXPECT(Dart_IsValid(result)); | 645 EXPECT_VALID(result); |
| 644 result = Dart_IntegerValue(result, &value); | 646 result = Dart_IntegerValue(result, &value); |
| 645 EXPECT_EQ(40, value); | 647 EXPECT_EQ(40, value); |
| 646 | 648 |
| 647 Dart_ExitScope(); // Exit the Dart API scope. | 649 Dart_ExitScope(); // Exit the Dart API scope. |
| 648 } | 650 } |
| 649 Dart_ShutdownIsolate(); | 651 Dart_ShutdownIsolate(); |
| 650 } | 652 } |
| 651 | 653 |
| 652 | 654 |
| 653 UNIT_TEST_CASE(InjectNativeFields1) { | 655 UNIT_TEST_CASE(InjectNativeFields1) { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 684 kNumNativeFields); | 686 kNumNativeFields); |
| 685 | 687 |
| 686 // Load up a test script in the test library. | 688 // Load up a test script in the test library. |
| 687 | 689 |
| 688 // Invoke a function which returns an object of type NativeFields. | 690 // Invoke a function which returns an object of type NativeFields. |
| 689 result = Dart_InvokeStatic(lib, | 691 result = Dart_InvokeStatic(lib, |
| 690 Dart_NewString("NativeFieldsTest"), | 692 Dart_NewString("NativeFieldsTest"), |
| 691 Dart_NewString("testMain"), | 693 Dart_NewString("testMain"), |
| 692 0, | 694 0, |
| 693 NULL); | 695 NULL); |
| 694 EXPECT(Dart_IsValid(result)); | 696 EXPECT_VALID(result); |
| 695 EXPECT(!Dart_ExceptionOccurred(result)); | 697 EXPECT(!Dart_ExceptionOccurred(result)); |
| 696 Instance& obj = Instance::Handle(); | 698 Instance& obj = Instance::Handle(); |
| 697 obj ^= Api::UnwrapHandle(result); | 699 obj ^= Api::UnwrapHandle(result); |
| 698 const Class& cls = Class::Handle(obj.clazz()); | 700 const Class& cls = Class::Handle(obj.clazz()); |
| 699 // We expect the newly created "NativeFields" object to have | 701 // We expect the newly created "NativeFields" object to have |
| 700 // 2 dart instance fields (fld1, fld2) and kNumNativeFields native fields. | 702 // 2 dart instance fields (fld1, fld2) and kNumNativeFields native fields. |
| 701 // Hence the size of an instance of "NativeFields" should be | 703 // Hence the size of an instance of "NativeFields" should be |
| 702 // (kNumNativeFields + 2) * kWordSize + sizeof the header word. | 704 // (kNumNativeFields + 2) * kWordSize + sizeof the header word. |
| 703 // We check to make sure the instance size computed by the VM matches | 705 // We check to make sure the instance size computed by the VM matches |
| 704 // our expectations. | 706 // our expectations. |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 kNumNativeFields); | 787 kNumNativeFields); |
| 786 | 788 |
| 787 // Load up a test script in it. | 789 // Load up a test script in it. |
| 788 | 790 |
| 789 // Invoke a function which returns an object of type NativeFields. | 791 // Invoke a function which returns an object of type NativeFields. |
| 790 Dart_Handle retobj = Dart_InvokeStatic(lib, | 792 Dart_Handle retobj = Dart_InvokeStatic(lib, |
| 791 Dart_NewString("NativeFieldsTest"), | 793 Dart_NewString("NativeFieldsTest"), |
| 792 Dart_NewString("testMain"), | 794 Dart_NewString("testMain"), |
| 793 0, | 795 0, |
| 794 NULL); | 796 NULL); |
| 795 EXPECT(Dart_IsValid(retobj)); | 797 EXPECT_VALID(retobj); |
| 796 EXPECT(!Dart_ExceptionOccurred(retobj)); | 798 EXPECT(!Dart_ExceptionOccurred(retobj)); |
| 797 | 799 |
| 798 // Now access and set various instance fields of the returned object. | 800 // Now access and set various instance fields of the returned object. |
| 799 result = Dart_GetInstanceField(retobj, Dart_NewString("fld3")); | 801 result = Dart_GetInstanceField(retobj, Dart_NewString("fld3")); |
| 800 EXPECT(!Dart_IsValid(result)); | 802 EXPECT(!Dart_IsValid(result)); |
| 801 result = Dart_GetInstanceField(retobj, Dart_NewString("fld1")); | 803 result = Dart_GetInstanceField(retobj, Dart_NewString("fld1")); |
| 802 EXPECT(Dart_IsValid(result)); | 804 EXPECT_VALID(result); |
| 803 int64_t value = 0; | 805 int64_t value = 0; |
| 804 result = Dart_IntegerValue(result, &value); | 806 result = Dart_IntegerValue(result, &value); |
| 805 EXPECT_EQ(10, value); | 807 EXPECT_EQ(10, value); |
| 806 result = Dart_GetInstanceField(retobj, Dart_NewString("fld2")); | 808 result = Dart_GetInstanceField(retobj, Dart_NewString("fld2")); |
| 807 EXPECT(Dart_IsValid(result)); | 809 EXPECT_VALID(result); |
| 808 result = Dart_IntegerValue(result, &value); | 810 result = Dart_IntegerValue(result, &value); |
| 809 EXPECT_EQ(20, value); | 811 EXPECT_EQ(20, value); |
| 810 result = Dart_SetInstanceField(retobj, | 812 result = Dart_SetInstanceField(retobj, |
| 811 Dart_NewString("fld2"), | 813 Dart_NewString("fld2"), |
| 812 Dart_NewInteger(40)); | 814 Dart_NewInteger(40)); |
| 813 EXPECT(!Dart_IsValid(result)); | 815 EXPECT(!Dart_IsValid(result)); |
| 814 result = Dart_SetInstanceField(retobj, | 816 result = Dart_SetInstanceField(retobj, |
| 815 Dart_NewString("fld1"), | 817 Dart_NewString("fld1"), |
| 816 Dart_NewInteger(40)); | 818 Dart_NewInteger(40)); |
| 817 EXPECT(Dart_IsValid(result)); | 819 EXPECT_VALID(result); |
| 818 result = Dart_GetInstanceField(retobj, Dart_NewString("fld1")); | 820 result = Dart_GetInstanceField(retobj, Dart_NewString("fld1")); |
| 819 EXPECT(Dart_IsValid(result)); | 821 EXPECT_VALID(result); |
| 820 result = Dart_IntegerValue(result, &value); | 822 result = Dart_IntegerValue(result, &value); |
| 821 EXPECT_EQ(40, value); | 823 EXPECT_EQ(40, value); |
| 822 | 824 |
| 823 // Now access and set various native instance fields of the returned object. | 825 // Now access and set various native instance fields of the returned object. |
| 824 const int kNativeFld0 = 0; | 826 const int kNativeFld0 = 0; |
| 825 const int kNativeFld1 = 1; | 827 const int kNativeFld1 = 1; |
| 826 const int kNativeFld2 = 2; | 828 const int kNativeFld2 = 2; |
| 827 const int kNativeFld3 = 3; | 829 const int kNativeFld3 = 3; |
| 828 const int kNativeFld4 = 4; | 830 const int kNativeFld4 = 4; |
| 829 intptr_t field_value = 0; | 831 intptr_t field_value = 0; |
| 830 result = Dart_GetNativeInstanceField(retobj, kNativeFld4, &field_value); | 832 result = Dart_GetNativeInstanceField(retobj, kNativeFld4, &field_value); |
| 831 EXPECT(!Dart_IsValid(result)); | 833 EXPECT(!Dart_IsValid(result)); |
| 832 result = Dart_GetNativeInstanceField(retobj, kNativeFld0, &field_value); | 834 result = Dart_GetNativeInstanceField(retobj, kNativeFld0, &field_value); |
| 833 EXPECT(Dart_IsValid(result)); | 835 EXPECT_VALID(result); |
| 834 EXPECT_EQ(0, field_value); | 836 EXPECT_EQ(0, field_value); |
| 835 result = Dart_GetNativeInstanceField(retobj, kNativeFld1, &field_value); | 837 result = Dart_GetNativeInstanceField(retobj, kNativeFld1, &field_value); |
| 836 EXPECT(Dart_IsValid(result)); | 838 EXPECT_VALID(result); |
| 837 EXPECT_EQ(0, field_value); | 839 EXPECT_EQ(0, field_value); |
| 838 result = Dart_GetNativeInstanceField(retobj, kNativeFld2, &field_value); | 840 result = Dart_GetNativeInstanceField(retobj, kNativeFld2, &field_value); |
| 839 EXPECT(Dart_IsValid(result)); | 841 EXPECT_VALID(result); |
| 840 EXPECT_EQ(0, field_value); | 842 EXPECT_EQ(0, field_value); |
| 841 result = Dart_SetNativeInstanceField(retobj, kNativeFld4, 40); | 843 result = Dart_SetNativeInstanceField(retobj, kNativeFld4, 40); |
| 842 EXPECT(!Dart_IsValid(result)); | 844 EXPECT(!Dart_IsValid(result)); |
| 843 result = Dart_SetNativeInstanceField(retobj, kNativeFld0, 4); | 845 result = Dart_SetNativeInstanceField(retobj, kNativeFld0, 4); |
| 844 EXPECT(Dart_IsValid(result)); | 846 EXPECT_VALID(result); |
| 845 result = Dart_SetNativeInstanceField(retobj, kNativeFld1, 40); | 847 result = Dart_SetNativeInstanceField(retobj, kNativeFld1, 40); |
| 846 EXPECT(Dart_IsValid(result)); | 848 EXPECT_VALID(result); |
| 847 result = Dart_SetNativeInstanceField(retobj, kNativeFld2, 400); | 849 result = Dart_SetNativeInstanceField(retobj, kNativeFld2, 400); |
| 848 EXPECT(Dart_IsValid(result)); | 850 EXPECT_VALID(result); |
| 849 result = Dart_SetNativeInstanceField(retobj, kNativeFld3, 4000); | 851 result = Dart_SetNativeInstanceField(retobj, kNativeFld3, 4000); |
| 850 EXPECT(Dart_IsValid(result)); | 852 EXPECT_VALID(result); |
| 851 result = Dart_GetNativeInstanceField(retobj, kNativeFld3, &field_value); | 853 result = Dart_GetNativeInstanceField(retobj, kNativeFld3, &field_value); |
| 852 EXPECT(Dart_IsValid(result)); | 854 EXPECT_VALID(result); |
| 853 EXPECT_EQ(4000, field_value); | 855 EXPECT_EQ(4000, field_value); |
| 854 | 856 |
| 855 // Now re-access various dart instance fields of the returned object | 857 // Now re-access various dart instance fields of the returned object |
| 856 // to ensure that there was no corruption while setting native fields. | 858 // to ensure that there was no corruption while setting native fields. |
| 857 result = Dart_GetInstanceField(retobj, Dart_NewString("fld1")); | 859 result = Dart_GetInstanceField(retobj, Dart_NewString("fld1")); |
| 858 EXPECT(Dart_IsValid(result)); | 860 EXPECT_VALID(result); |
| 859 result = Dart_IntegerValue(result, &value); | 861 result = Dart_IntegerValue(result, &value); |
| 860 EXPECT_EQ(40, value); | 862 EXPECT_EQ(40, value); |
| 861 result = Dart_GetInstanceField(retobj, Dart_NewString("fld2")); | 863 result = Dart_GetInstanceField(retobj, Dart_NewString("fld2")); |
| 862 EXPECT(Dart_IsValid(result)); | 864 EXPECT_VALID(result); |
| 863 result = Dart_IntegerValue(result, &value); | 865 result = Dart_IntegerValue(result, &value); |
| 864 EXPECT_EQ(20, value); | 866 EXPECT_EQ(20, value); |
| 865 | 867 |
| 866 Dart_ExitScope(); // Exit the Dart API scope. | 868 Dart_ExitScope(); // Exit the Dart API scope. |
| 867 } | 869 } |
| 868 Dart_ShutdownIsolate(); | 870 Dart_ShutdownIsolate(); |
| 869 } | 871 } |
| 870 | 872 |
| 871 | 873 |
| 872 UNIT_TEST_CASE(NegativeNativeFieldAccess) { | 874 UNIT_TEST_CASE(NegativeNativeFieldAccess) { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 897 | 899 |
| 898 // Create a test library and Load up a test script in it. | 900 // Create a test library and Load up a test script in it. |
| 899 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 901 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 900 | 902 |
| 901 // Invoke a function which returns an object of type NativeFields. | 903 // Invoke a function which returns an object of type NativeFields. |
| 902 Dart_Handle retobj = Dart_InvokeStatic(lib, | 904 Dart_Handle retobj = Dart_InvokeStatic(lib, |
| 903 Dart_NewString("NativeFieldsTest"), | 905 Dart_NewString("NativeFieldsTest"), |
| 904 Dart_NewString("testMain1"), | 906 Dart_NewString("testMain1"), |
| 905 0, | 907 0, |
| 906 NULL); | 908 NULL); |
| 907 EXPECT(Dart_IsValid(retobj)); | 909 EXPECT_VALID(retobj); |
| 908 EXPECT(!Dart_ExceptionOccurred(retobj)); | 910 EXPECT(!Dart_ExceptionOccurred(retobj)); |
| 909 | 911 |
| 910 // Now access and set various native instance fields of the returned object. | 912 // Now access and set various native instance fields of the returned object. |
| 911 // All of these tests are expected to return failure as there are no | 913 // All of these tests are expected to return failure as there are no |
| 912 // native fields in an instance of NativeFields. | 914 // native fields in an instance of NativeFields. |
| 913 const int kNativeFld0 = 0; | 915 const int kNativeFld0 = 0; |
| 914 const int kNativeFld1 = 1; | 916 const int kNativeFld1 = 1; |
| 915 const int kNativeFld2 = 2; | 917 const int kNativeFld2 = 2; |
| 916 const int kNativeFld3 = 3; | 918 const int kNativeFld3 = 3; |
| 917 const int kNativeFld4 = 4; | 919 const int kNativeFld4 = 4; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 930 EXPECT(!Dart_IsValid(result)); | 932 EXPECT(!Dart_IsValid(result)); |
| 931 result = Dart_SetNativeInstanceField(retobj, kNativeFld0, 400); | 933 result = Dart_SetNativeInstanceField(retobj, kNativeFld0, 400); |
| 932 EXPECT(!Dart_IsValid(result)); | 934 EXPECT(!Dart_IsValid(result)); |
| 933 | 935 |
| 934 // Invoke a function which returns a closure object. | 936 // Invoke a function which returns a closure object. |
| 935 retobj = Dart_InvokeStatic(lib, | 937 retobj = Dart_InvokeStatic(lib, |
| 936 Dart_NewString("NativeFieldsTest"), | 938 Dart_NewString("NativeFieldsTest"), |
| 937 Dart_NewString("testMain2"), | 939 Dart_NewString("testMain2"), |
| 938 0, | 940 0, |
| 939 NULL); | 941 NULL); |
| 940 EXPECT(Dart_IsValid(retobj)); | 942 EXPECT_VALID(retobj); |
| 941 EXPECT(!Dart_ExceptionOccurred(retobj)); | 943 EXPECT(!Dart_ExceptionOccurred(retobj)); |
| 942 result = Dart_GetNativeInstanceField(retobj, kNativeFld4, &value); | 944 result = Dart_GetNativeInstanceField(retobj, kNativeFld4, &value); |
| 943 EXPECT(!Dart_IsValid(result)); | 945 EXPECT(!Dart_IsValid(result)); |
| 944 result = Dart_GetNativeInstanceField(retobj, kNativeFld0, &value); | 946 result = Dart_GetNativeInstanceField(retobj, kNativeFld0, &value); |
| 945 EXPECT(!Dart_IsValid(result)); | 947 EXPECT(!Dart_IsValid(result)); |
| 946 result = Dart_GetNativeInstanceField(retobj, kNativeFld1, &value); | 948 result = Dart_GetNativeInstanceField(retobj, kNativeFld1, &value); |
| 947 EXPECT(!Dart_IsValid(result)); | 949 EXPECT(!Dart_IsValid(result)); |
| 948 result = Dart_GetNativeInstanceField(retobj, kNativeFld2, &value); | 950 result = Dart_GetNativeInstanceField(retobj, kNativeFld2, &value); |
| 949 EXPECT(!Dart_IsValid(result)); | 951 EXPECT(!Dart_IsValid(result)); |
| 950 result = Dart_SetNativeInstanceField(retobj, kNativeFld4, 40); | 952 result = Dart_SetNativeInstanceField(retobj, kNativeFld4, 40); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 978 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 980 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 979 | 981 |
| 980 // Invoke a function which returns an object. | 982 // Invoke a function which returns an object. |
| 981 result = Dart_InvokeStatic(lib, | 983 result = Dart_InvokeStatic(lib, |
| 982 Dart_NewString("TestClass"), | 984 Dart_NewString("TestClass"), |
| 983 Dart_NewString("testMain"), | 985 Dart_NewString("testMain"), |
| 984 0, | 986 0, |
| 985 NULL); | 987 NULL); |
| 986 | 988 |
| 987 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("TestClass")); | 989 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("TestClass")); |
| 988 EXPECT(Dart_IsValid(cls)); | 990 EXPECT_VALID(cls); |
| 989 | 991 |
| 990 // For uninitialized fields, the getter is returned | 992 // For uninitialized fields, the getter is returned |
| 991 result = Dart_GetStaticField(cls, Dart_NewString("fld1")); | 993 result = Dart_GetStaticField(cls, Dart_NewString("fld1")); |
| 992 EXPECT(Dart_IsValid(result)); | 994 EXPECT_VALID(result); |
| 993 int64_t value = 0; | 995 int64_t value = 0; |
| 994 result = Dart_IntegerValue(result, &value); | 996 result = Dart_IntegerValue(result, &value); |
| 995 EXPECT_EQ(7, value); | 997 EXPECT_EQ(7, value); |
| 996 | 998 |
| 997 result = Dart_GetStaticField(cls, Dart_NewString("fld2")); | 999 result = Dart_GetStaticField(cls, Dart_NewString("fld2")); |
| 998 EXPECT(Dart_IsValid(result)); | 1000 EXPECT_VALID(result); |
| 999 result = Dart_IntegerValue(result, &value); | 1001 result = Dart_IntegerValue(result, &value); |
| 1000 EXPECT_EQ(11, value); | 1002 EXPECT_EQ(11, value); |
| 1001 | 1003 |
| 1002 // Overwrite fld2 | 1004 // Overwrite fld2 |
| 1003 result = Dart_SetStaticField(cls, | 1005 result = Dart_SetStaticField(cls, |
| 1004 Dart_NewString("fld2"), | 1006 Dart_NewString("fld2"), |
| 1005 Dart_NewInteger(13)); | 1007 Dart_NewInteger(13)); |
| 1006 EXPECT(Dart_IsValid(result)); | 1008 EXPECT_VALID(result); |
| 1007 | 1009 |
| 1008 // We now get the new value for fld2, not the initializer | 1010 // We now get the new value for fld2, not the initializer |
| 1009 result = Dart_GetStaticField(cls, Dart_NewString("fld2")); | 1011 result = Dart_GetStaticField(cls, Dart_NewString("fld2")); |
| 1010 EXPECT(Dart_IsValid(result)); | 1012 EXPECT_VALID(result); |
| 1011 result = Dart_IntegerValue(result, &value); | 1013 result = Dart_IntegerValue(result, &value); |
| 1012 EXPECT_EQ(13, value); | 1014 EXPECT_EQ(13, value); |
| 1013 | 1015 |
| 1014 Dart_ExitScope(); // Exit the Dart API scope. | 1016 Dart_ExitScope(); // Exit the Dart API scope. |
| 1015 } | 1017 } |
| 1016 Dart_ShutdownIsolate(); | 1018 Dart_ShutdownIsolate(); |
| 1017 } | 1019 } |
| 1018 | 1020 |
| 1019 | 1021 |
| 1020 UNIT_TEST_CASE(StaticFieldNotFound) { | 1022 UNIT_TEST_CASE(StaticFieldNotFound) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1033 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 1035 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 1034 | 1036 |
| 1035 // Invoke a function. | 1037 // Invoke a function. |
| 1036 result = Dart_InvokeStatic(lib, | 1038 result = Dart_InvokeStatic(lib, |
| 1037 Dart_NewString("TestClass"), | 1039 Dart_NewString("TestClass"), |
| 1038 Dart_NewString("testMain"), | 1040 Dart_NewString("testMain"), |
| 1039 0, | 1041 0, |
| 1040 NULL); | 1042 NULL); |
| 1041 | 1043 |
| 1042 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("TestClass")); | 1044 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("TestClass")); |
| 1043 EXPECT(Dart_IsValid(cls)); | 1045 EXPECT_VALID(cls); |
| 1044 | 1046 |
| 1045 result = Dart_GetStaticField(cls, Dart_NewString("not_found")); | 1047 result = Dart_GetStaticField(cls, Dart_NewString("not_found")); |
| 1046 EXPECT(!Dart_IsValid(result)); | 1048 EXPECT(!Dart_IsValid(result)); |
| 1047 EXPECT_STREQ("Specified field is not found in the class", | 1049 EXPECT_STREQ("Specified field is not found in the class", |
| 1048 Dart_GetError(result)); | 1050 Dart_GetError(result)); |
| 1049 | 1051 |
| 1050 result = Dart_SetStaticField(cls, | 1052 result = Dart_SetStaticField(cls, |
| 1051 Dart_NewString("not_found"), | 1053 Dart_NewString("not_found"), |
| 1052 Dart_NewInteger(13)); | 1054 Dart_NewInteger(13)); |
| 1053 EXPECT(!Dart_IsValid(result)); | 1055 EXPECT(!Dart_IsValid(result)); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1086 | 1088 |
| 1087 // Create a test library and Load up a test script in it. | 1089 // Create a test library and Load up a test script in it. |
| 1088 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 1090 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 1089 | 1091 |
| 1090 // Invoke a function which returns an object of type InvokeDynamic. | 1092 // Invoke a function which returns an object of type InvokeDynamic. |
| 1091 Dart_Handle retobj = Dart_InvokeStatic(lib, | 1093 Dart_Handle retobj = Dart_InvokeStatic(lib, |
| 1092 Dart_NewString("InvokeDynamicTest"), | 1094 Dart_NewString("InvokeDynamicTest"), |
| 1093 Dart_NewString("testMain"), | 1095 Dart_NewString("testMain"), |
| 1094 0, | 1096 0, |
| 1095 NULL); | 1097 NULL); |
| 1096 EXPECT(Dart_IsValid(retobj)); | 1098 EXPECT_VALID(retobj); |
| 1097 EXPECT(!Dart_ExceptionOccurred(retobj)); | 1099 EXPECT(!Dart_ExceptionOccurred(retobj)); |
| 1098 | 1100 |
| 1099 | 1101 |
| 1100 // Now invoke a dynamic method and check the result. | 1102 // Now invoke a dynamic method and check the result. |
| 1101 Dart_Handle dart_arguments[1]; | 1103 Dart_Handle dart_arguments[1]; |
| 1102 dart_arguments[0] = Dart_NewInteger(1); | 1104 dart_arguments[0] = Dart_NewInteger(1); |
| 1103 result = Dart_InvokeDynamic(retobj, | 1105 result = Dart_InvokeDynamic(retobj, |
| 1104 Dart_NewString("method1"), | 1106 Dart_NewString("method1"), |
| 1105 1, | 1107 1, |
| 1106 dart_arguments); | 1108 dart_arguments); |
| 1107 EXPECT(Dart_IsValid(result)); | 1109 EXPECT_VALID(result); |
| 1108 EXPECT(!Dart_ExceptionOccurred(result)); | 1110 EXPECT(!Dart_ExceptionOccurred(result)); |
| 1109 EXPECT(Dart_IsInteger(result)); | 1111 EXPECT(Dart_IsInteger(result)); |
| 1110 int64_t value = 0; | 1112 int64_t value = 0; |
| 1111 result = Dart_IntegerValue(result, &value); | 1113 result = Dart_IntegerValue(result, &value); |
| 1112 EXPECT_EQ(41, value); | 1114 EXPECT_EQ(41, value); |
| 1113 | 1115 |
| 1114 result = Dart_InvokeDynamic(retobj, Dart_NewString("method2"), 0, NULL); | 1116 result = Dart_InvokeDynamic(retobj, Dart_NewString("method2"), 0, NULL); |
| 1115 EXPECT(!Dart_IsValid(result)); | 1117 EXPECT(!Dart_IsValid(result)); |
| 1116 | 1118 |
| 1117 result = Dart_InvokeDynamic(retobj, Dart_NewString("method1"), 0, NULL); | 1119 result = Dart_InvokeDynamic(retobj, Dart_NewString("method1"), 0, NULL); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1158 | 1160 |
| 1159 // Create a test library and Load up a test script in it. | 1161 // Create a test library and Load up a test script in it. |
| 1160 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 1162 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 1161 | 1163 |
| 1162 // Invoke a function which returns a closure. | 1164 // Invoke a function which returns a closure. |
| 1163 Dart_Handle retobj = Dart_InvokeStatic(lib, | 1165 Dart_Handle retobj = Dart_InvokeStatic(lib, |
| 1164 Dart_NewString("InvokeClosureTest"), | 1166 Dart_NewString("InvokeClosureTest"), |
| 1165 Dart_NewString("testMain1"), | 1167 Dart_NewString("testMain1"), |
| 1166 0, | 1168 0, |
| 1167 NULL); | 1169 NULL); |
| 1168 EXPECT(Dart_IsValid(retobj)); | 1170 EXPECT_VALID(retobj); |
| 1169 EXPECT(!Dart_ExceptionOccurred(retobj)); | 1171 EXPECT(!Dart_ExceptionOccurred(retobj)); |
| 1170 | 1172 |
| 1171 EXPECT(Dart_IsClosure(retobj)); | 1173 EXPECT(Dart_IsClosure(retobj)); |
| 1172 EXPECT(!Dart_IsClosure(Dart_NewInteger(101))); | 1174 EXPECT(!Dart_IsClosure(Dart_NewInteger(101))); |
| 1173 | 1175 |
| 1174 // Now invoke the closure and check the result. | 1176 // Now invoke the closure and check the result. |
| 1175 Dart_Handle dart_arguments[1]; | 1177 Dart_Handle dart_arguments[1]; |
| 1176 dart_arguments[0] = Dart_NewInteger(1); | 1178 dart_arguments[0] = Dart_NewInteger(1); |
| 1177 result = Dart_InvokeClosure(retobj, 1, dart_arguments); | 1179 result = Dart_InvokeClosure(retobj, 1, dart_arguments); |
| 1178 EXPECT(Dart_IsValid(result)); | 1180 EXPECT_VALID(result); |
| 1179 EXPECT(!Dart_ExceptionOccurred(result)); | 1181 EXPECT(!Dart_ExceptionOccurred(result)); |
| 1180 EXPECT(Dart_IsInteger(result)); | 1182 EXPECT(Dart_IsInteger(result)); |
| 1181 int64_t value = 0; | 1183 int64_t value = 0; |
| 1182 result = Dart_IntegerValue(result, &value); | 1184 result = Dart_IntegerValue(result, &value); |
| 1183 EXPECT_EQ(51, value); | 1185 EXPECT_EQ(51, value); |
| 1184 | 1186 |
| 1185 // Invoke closure with wrong number of args, should result in exception. | 1187 // Invoke closure with wrong number of args, should result in exception. |
| 1186 result = Dart_InvokeClosure(retobj, 0, NULL); | 1188 result = Dart_InvokeClosure(retobj, 0, NULL); |
| 1187 EXPECT(Dart_IsValid(result)); | 1189 EXPECT_VALID(result); |
| 1188 EXPECT(Dart_ExceptionOccurred(result)); | 1190 EXPECT(Dart_ExceptionOccurred(result)); |
| 1189 | 1191 |
| 1190 // Invoke a function which returns a closure. | 1192 // Invoke a function which returns a closure. |
| 1191 retobj = Dart_InvokeStatic(lib, | 1193 retobj = Dart_InvokeStatic(lib, |
| 1192 Dart_NewString("InvokeClosureTest"), | 1194 Dart_NewString("InvokeClosureTest"), |
| 1193 Dart_NewString("testMain2"), | 1195 Dart_NewString("testMain2"), |
| 1194 0, | 1196 0, |
| 1195 NULL); | 1197 NULL); |
| 1196 EXPECT(Dart_IsValid(retobj)); | 1198 EXPECT_VALID(retobj); |
| 1197 EXPECT(!Dart_ExceptionOccurred(retobj)); | 1199 EXPECT(!Dart_ExceptionOccurred(retobj)); |
| 1198 | 1200 |
| 1199 EXPECT(Dart_IsClosure(retobj)); | 1201 EXPECT(Dart_IsClosure(retobj)); |
| 1200 EXPECT(!Dart_IsClosure(Dart_NewString("abcdef"))); | 1202 EXPECT(!Dart_IsClosure(Dart_NewString("abcdef"))); |
| 1201 | 1203 |
| 1202 // Now invoke the closure and check the result (should be an exception). | 1204 // Now invoke the closure and check the result (should be an exception). |
| 1203 dart_arguments[0] = Dart_NewInteger(1); | 1205 dart_arguments[0] = Dart_NewInteger(1); |
| 1204 result = Dart_InvokeClosure(retobj, 1, dart_arguments); | 1206 result = Dart_InvokeClosure(retobj, 1, dart_arguments); |
| 1205 EXPECT(Dart_ExceptionOccurred(result)); | 1207 EXPECT(Dart_ExceptionOccurred(result)); |
| 1206 | 1208 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1256 Dart_Handle lib = TestCase::LoadTestScript( | 1258 Dart_Handle lib = TestCase::LoadTestScript( |
| 1257 kScriptChars, | 1259 kScriptChars, |
| 1258 reinterpret_cast<Dart_NativeEntryResolver>(native_lookup)); | 1260 reinterpret_cast<Dart_NativeEntryResolver>(native_lookup)); |
| 1259 | 1261 |
| 1260 // Invoke a function which returns an object of type ThrowException. | 1262 // Invoke a function which returns an object of type ThrowException. |
| 1261 Dart_Handle retobj = Dart_InvokeStatic(lib, | 1263 Dart_Handle retobj = Dart_InvokeStatic(lib, |
| 1262 Dart_NewString("ThrowExceptionTest"), | 1264 Dart_NewString("ThrowExceptionTest"), |
| 1263 Dart_NewString("testMain"), | 1265 Dart_NewString("testMain"), |
| 1264 0, | 1266 0, |
| 1265 NULL); | 1267 NULL); |
| 1266 EXPECT(Dart_IsValid(retobj)); | 1268 EXPECT_VALID(retobj); |
| 1267 EXPECT(!Dart_ExceptionOccurred(retobj)); | 1269 EXPECT(!Dart_ExceptionOccurred(retobj)); |
| 1268 | 1270 |
| 1269 // Throwing an exception here should result in an error. | 1271 // Throwing an exception here should result in an error. |
| 1270 result = Dart_ThrowException(retobj); | 1272 result = Dart_ThrowException(retobj); |
| 1271 EXPECT(!Dart_IsValid(result)); | 1273 EXPECT(!Dart_IsValid(result)); |
| 1272 | 1274 |
| 1273 // Now invoke method2 which invokes a natve method where it is | 1275 // Now invoke method2 which invokes a natve method where it is |
| 1274 // ok to throw an exception, check the result which would indicate | 1276 // ok to throw an exception, check the result which would indicate |
| 1275 // if an exception was thrown or not. | 1277 // if an exception was thrown or not. |
| 1276 result = Dart_InvokeDynamic(retobj, Dart_NewString("method2"), 0, NULL); | 1278 result = Dart_InvokeDynamic(retobj, Dart_NewString("method2"), 0, NULL); |
| 1277 EXPECT(Dart_IsValid(result)); | 1279 EXPECT_VALID(result); |
| 1278 EXPECT(!Dart_ExceptionOccurred(result)); | 1280 EXPECT(!Dart_ExceptionOccurred(result)); |
| 1279 EXPECT(Dart_IsInteger(result)); | 1281 EXPECT(Dart_IsInteger(result)); |
| 1280 int64_t value = 0; | 1282 int64_t value = 0; |
| 1281 result = Dart_IntegerValue(result, &value); | 1283 result = Dart_IntegerValue(result, &value); |
| 1282 EXPECT_EQ(5, value); | 1284 EXPECT_EQ(5, value); |
| 1283 | 1285 |
| 1284 Dart_ExitScope(); // Exit the Dart API scope. | 1286 Dart_ExitScope(); // Exit the Dart API scope. |
| 1285 EXPECT_EQ(size, state->ZoneSizeInBytes()); | 1287 EXPECT_EQ(size, state->ZoneSizeInBytes()); |
| 1286 } | 1288 } |
| 1287 Dart_ShutdownIsolate(); | 1289 Dart_ShutdownIsolate(); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1318 Dart_EnterScope(); | 1320 Dart_EnterScope(); |
| 1319 Dart_Handle lib = TestCase::LoadTestScript( | 1321 Dart_Handle lib = TestCase::LoadTestScript( |
| 1320 kScriptChars, | 1322 kScriptChars, |
| 1321 reinterpret_cast<Dart_NativeEntryResolver>(gnac_lookup)); | 1323 reinterpret_cast<Dart_NativeEntryResolver>(gnac_lookup)); |
| 1322 | 1324 |
| 1323 Dart_Handle result = Dart_InvokeStatic(lib, | 1325 Dart_Handle result = Dart_InvokeStatic(lib, |
| 1324 Dart_NewString("Test"), | 1326 Dart_NewString("Test"), |
| 1325 Dart_NewString("testMain"), | 1327 Dart_NewString("testMain"), |
| 1326 0, | 1328 0, |
| 1327 NULL); | 1329 NULL); |
| 1328 EXPECT(Dart_IsValid(result)); | 1330 EXPECT_VALID(result); |
| 1329 EXPECT(Dart_IsInteger(result)); | 1331 EXPECT(Dart_IsInteger(result)); |
| 1330 | 1332 |
| 1331 int64_t value = 0; | 1333 int64_t value = 0; |
| 1332 result = Dart_IntegerValue(result, &value); | 1334 result = Dart_IntegerValue(result, &value); |
| 1333 EXPECT(Dart_IsValid(result)); | 1335 EXPECT_VALID(result); |
| 1334 EXPECT_EQ(3, value); | 1336 EXPECT_EQ(3, value); |
| 1335 | 1337 |
| 1336 Dart_ExitScope(); | 1338 Dart_ExitScope(); |
| 1337 } | 1339 } |
| 1338 Dart_ShutdownIsolate(); | 1340 Dart_ShutdownIsolate(); |
| 1339 } | 1341 } |
| 1340 | 1342 |
| 1341 | 1343 |
| 1342 UNIT_TEST_CASE(InstanceOf) { | 1344 UNIT_TEST_CASE(InstanceOf) { |
| 1343 const char* kScriptChars = | 1345 const char* kScriptChars = |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1359 // Create a test library and Load up a test script in it. | 1361 // Create a test library and Load up a test script in it. |
| 1360 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 1362 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 1361 | 1363 |
| 1362 // Invoke a function which returns an object of type InstanceOf.. | 1364 // Invoke a function which returns an object of type InstanceOf.. |
| 1363 Dart_Handle instanceOfTestObj = | 1365 Dart_Handle instanceOfTestObj = |
| 1364 Dart_InvokeStatic(lib, | 1366 Dart_InvokeStatic(lib, |
| 1365 Dart_NewString("InstanceOfTest"), | 1367 Dart_NewString("InstanceOfTest"), |
| 1366 Dart_NewString("testMain"), | 1368 Dart_NewString("testMain"), |
| 1367 0, | 1369 0, |
| 1368 NULL); | 1370 NULL); |
| 1369 EXPECT(Dart_IsValid(instanceOfTestObj)); | 1371 EXPECT_VALID(instanceOfTestObj); |
| 1370 EXPECT(!Dart_ExceptionOccurred(instanceOfTestObj)); | 1372 EXPECT(!Dart_ExceptionOccurred(instanceOfTestObj)); |
| 1371 | 1373 |
| 1372 // Fetch InstanceOfTest class. | 1374 // Fetch InstanceOfTest class. |
| 1373 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("InstanceOfTest")); | 1375 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("InstanceOfTest")); |
| 1374 EXPECT(Dart_IsValid(cls)); | 1376 EXPECT_VALID(cls); |
| 1375 EXPECT(!Dart_ExceptionOccurred(cls)); | 1377 EXPECT(!Dart_ExceptionOccurred(cls)); |
| 1376 | 1378 |
| 1377 // Now check instanceOfTestObj reported as an instance of | 1379 // Now check instanceOfTestObj reported as an instance of |
| 1378 // InstanceOfTest class. | 1380 // InstanceOfTest class. |
| 1379 bool is_instance = false; | 1381 bool is_instance = false; |
| 1380 result = Dart_IsInstanceOf(instanceOfTestObj, cls, &is_instance); | 1382 result = Dart_IsInstanceOf(instanceOfTestObj, cls, &is_instance); |
| 1381 EXPECT(Dart_IsValid(result)); | 1383 EXPECT_VALID(result); |
| 1382 EXPECT(is_instance); | 1384 EXPECT(is_instance); |
| 1383 | 1385 |
| 1384 // Fetch OtherClass and check if instanceOfTestObj is instance of it. | 1386 // Fetch OtherClass and check if instanceOfTestObj is instance of it. |
| 1385 Dart_Handle otherClass = Dart_GetClass(lib, Dart_NewString("OtherClass")); | 1387 Dart_Handle otherClass = Dart_GetClass(lib, Dart_NewString("OtherClass")); |
| 1386 EXPECT(Dart_IsValid(otherClass)); | 1388 EXPECT_VALID(otherClass); |
| 1387 EXPECT(!Dart_ExceptionOccurred(otherClass)); | 1389 EXPECT(!Dart_ExceptionOccurred(otherClass)); |
| 1388 | 1390 |
| 1389 result = Dart_IsInstanceOf(instanceOfTestObj, otherClass, &is_instance); | 1391 result = Dart_IsInstanceOf(instanceOfTestObj, otherClass, &is_instance); |
| 1390 EXPECT(Dart_IsValid(result)); | 1392 EXPECT_VALID(result); |
| 1391 EXPECT(!is_instance); | 1393 EXPECT(!is_instance); |
| 1392 | 1394 |
| 1393 // Check that primitives are not instances of InstanceOfTest class. | 1395 // Check that primitives are not instances of InstanceOfTest class. |
| 1394 result = Dart_IsInstanceOf(Dart_NewString("a string"), otherClass, | 1396 result = Dart_IsInstanceOf(Dart_NewString("a string"), otherClass, |
| 1395 &is_instance); | 1397 &is_instance); |
| 1396 EXPECT(Dart_IsValid(result)); | 1398 EXPECT_VALID(result); |
| 1397 EXPECT(!is_instance); | 1399 EXPECT(!is_instance); |
| 1398 | 1400 |
| 1399 result = Dart_IsInstanceOf(Dart_NewInteger(42), otherClass, &is_instance); | 1401 result = Dart_IsInstanceOf(Dart_NewInteger(42), otherClass, &is_instance); |
| 1400 EXPECT(Dart_IsValid(result)); | 1402 EXPECT_VALID(result); |
| 1401 EXPECT(!is_instance); | 1403 EXPECT(!is_instance); |
| 1402 | 1404 |
| 1403 result = Dart_IsInstanceOf(Dart_NewBoolean(true), otherClass, &is_instance); | 1405 result = Dart_IsInstanceOf(Dart_NewBoolean(true), otherClass, &is_instance); |
| 1404 EXPECT(Dart_IsValid(result)); | 1406 EXPECT_VALID(result); |
| 1405 EXPECT(!is_instance); | 1407 EXPECT(!is_instance); |
| 1406 | 1408 |
| 1407 // Check that null is not an instance of InstanceOfTest class. | 1409 // Check that null is not an instance of InstanceOfTest class. |
| 1408 Dart_Handle null = Dart_InvokeStatic(lib, | 1410 Dart_Handle null = Dart_InvokeStatic(lib, |
| 1409 Dart_NewString("OtherClass"), | 1411 Dart_NewString("OtherClass"), |
| 1410 Dart_NewString("returnNull"), | 1412 Dart_NewString("returnNull"), |
| 1411 0, | 1413 0, |
| 1412 NULL); | 1414 NULL); |
| 1413 EXPECT(Dart_IsValid(null)); | 1415 EXPECT_VALID(null); |
| 1414 EXPECT(!Dart_ExceptionOccurred(null)); | 1416 EXPECT(!Dart_ExceptionOccurred(null)); |
| 1415 | 1417 |
| 1416 result = Dart_IsInstanceOf(null, otherClass, &is_instance); | 1418 result = Dart_IsInstanceOf(null, otherClass, &is_instance); |
| 1417 EXPECT(Dart_IsValid(result)); | 1419 EXPECT_VALID(result); |
| 1418 EXPECT(!is_instance); | 1420 EXPECT(!is_instance); |
| 1419 | 1421 |
| 1420 // Check that error is returned if null is passed as a class argument. | 1422 // Check that error is returned if null is passed as a class argument. |
| 1421 result = Dart_IsInstanceOf(null, null, &is_instance); | 1423 result = Dart_IsInstanceOf(null, null, &is_instance); |
| 1422 EXPECT(!Dart_IsValid(result)); | 1424 EXPECT(!Dart_IsValid(result)); |
| 1423 | 1425 |
| 1424 Dart_ExitScope(); // Exit the Dart API scope. | 1426 Dart_ExitScope(); // Exit the Dart API scope. |
| 1425 } | 1427 } |
| 1426 Dart_ShutdownIsolate(); | 1428 Dart_ShutdownIsolate(); |
| 1427 } | 1429 } |
| 1428 | 1430 |
| 1429 | 1431 |
| 1430 UNIT_TEST_CASE(NullReceiver) { | 1432 UNIT_TEST_CASE(NullReceiver) { |
| 1431 Dart_CreateIsolate(NULL, NULL); | 1433 Dart_CreateIsolate(NULL, NULL); |
| 1432 Dart_EnterScope(); // Enter a Dart API scope for the unit test. | 1434 Dart_EnterScope(); // Enter a Dart API scope for the unit test. |
| 1433 { | 1435 { |
| 1434 Zone zone; | 1436 Zone zone; |
| 1435 HandleScope hs; | 1437 HandleScope hs; |
| 1436 | 1438 |
| 1437 Dart_Handle function_name = Dart_NewString("toString"); | 1439 Dart_Handle function_name = Dart_NewString("toString"); |
| 1438 const int number_of_arguments = 0; | 1440 const int number_of_arguments = 0; |
| 1439 Dart_Handle null_receiver = Api::NewLocalHandle(Object::Handle()); | 1441 Dart_Handle null_receiver = Api::NewLocalHandle(Object::Handle()); |
| 1440 Dart_Handle result = Dart_InvokeDynamic(null_receiver, | 1442 Dart_Handle result = Dart_InvokeDynamic(null_receiver, |
| 1441 function_name, | 1443 function_name, |
| 1442 number_of_arguments, | 1444 number_of_arguments, |
| 1443 NULL); | 1445 NULL); |
| 1444 EXPECT(Dart_IsValid(result)); | 1446 EXPECT_VALID(result); |
| 1445 EXPECT(Dart_IsString(result)); | 1447 EXPECT(Dart_IsString(result)); |
| 1446 | 1448 |
| 1447 // Should throw a NullPointerException. Disabled due to bug 5415268. | 1449 // Should throw a NullPointerException. Disabled due to bug 5415268. |
| 1448 /* | 1450 /* |
| 1449 Dart_Handle function_name2 = Dart_NewString("NoNoNo"); | 1451 Dart_Handle function_name2 = Dart_NewString("NoNoNo"); |
| 1450 result = Dart_InvokeDynamic(null_receiver, | 1452 result = Dart_InvokeDynamic(null_receiver, |
| 1451 function_name2, | 1453 function_name2, |
| 1452 number_of_arguments, | 1454 number_of_arguments, |
| 1453 dart_arguments); | 1455 dart_arguments); |
| 1454 EXPECT(Dart_IsValid(result)); | 1456 EXPECT_VALID(result); |
| 1455 EXPECT(Dart_ExceptionOccurred(result)); */ | 1457 EXPECT(Dart_ExceptionOccurred(result)); */ |
| 1456 } | 1458 } |
| 1457 Dart_ExitScope(); // Exit the Dart API scope. | 1459 Dart_ExitScope(); // Exit the Dart API scope. |
| 1458 Dart_ShutdownIsolate(); | 1460 Dart_ShutdownIsolate(); |
| 1459 } | 1461 } |
| 1460 | 1462 |
| 1461 | 1463 |
| 1462 static Dart_Handle library_handler(Dart_LibraryTag tag, | 1464 static Dart_Handle library_handler(Dart_LibraryTag tag, |
| 1463 Dart_Handle library, | 1465 Dart_Handle library, |
| 1464 Dart_Handle url) { | 1466 Dart_Handle url) { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1499 | 1501 |
| 1500 url = Dart_NewString("library2.dart"); | 1502 url = Dart_NewString("library2.dart"); |
| 1501 source = Dart_NewString(kLibrary2Chars); | 1503 source = Dart_NewString(kLibrary2Chars); |
| 1502 Dart_LoadLibrary(url, source); | 1504 Dart_LoadLibrary(url, source); |
| 1503 | 1505 |
| 1504 result = Dart_InvokeStatic(result, | 1506 result = Dart_InvokeStatic(result, |
| 1505 Dart_NewString(""), | 1507 Dart_NewString(""), |
| 1506 Dart_NewString("main"), | 1508 Dart_NewString("main"), |
| 1507 0, | 1509 0, |
| 1508 NULL); | 1510 NULL); |
| 1509 assert(!Dart_IsValid(result)); | 1511 EXPECT(!Dart_IsValid(result)); |
| 1510 EXPECT_STREQ("Duplicate definition : 'foo' is defined in" | 1512 EXPECT_STREQ("Duplicate definition : 'foo' is defined in" |
| 1511 " 'library2.dart' and 'dart:test-lib'\n", | 1513 " 'library2.dart' and 'dart:test-lib'\n", |
| 1512 Dart_GetError(result)); | 1514 Dart_GetError(result)); |
| 1513 | 1515 |
| 1514 Dart_ExitScope(); // Exit the Dart API scope. | 1516 Dart_ExitScope(); // Exit the Dart API scope. |
| 1515 } | 1517 } |
| 1516 Dart_ShutdownIsolate(); | 1518 Dart_ShutdownIsolate(); |
| 1517 } | 1519 } |
| 1518 | 1520 |
| 1519 | 1521 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1547 | 1549 |
| 1548 url = Dart_NewString("library2.dart"); | 1550 url = Dart_NewString("library2.dart"); |
| 1549 source = Dart_NewString(kLibrary2Chars); | 1551 source = Dart_NewString(kLibrary2Chars); |
| 1550 Dart_LoadLibrary(url, source); | 1552 Dart_LoadLibrary(url, source); |
| 1551 | 1553 |
| 1552 result = Dart_InvokeStatic(result, | 1554 result = Dart_InvokeStatic(result, |
| 1553 Dart_NewString(""), | 1555 Dart_NewString(""), |
| 1554 Dart_NewString("main"), | 1556 Dart_NewString("main"), |
| 1555 0, | 1557 0, |
| 1556 NULL); | 1558 NULL); |
| 1557 assert(Dart_IsValid(result)); | 1559 EXPECT_VALID(result); |
| 1558 | 1560 |
| 1559 Dart_ExitScope(); // Exit the Dart API scope. | 1561 Dart_ExitScope(); // Exit the Dart API scope. |
| 1560 } | 1562 } |
| 1561 Dart_ShutdownIsolate(); | 1563 Dart_ShutdownIsolate(); |
| 1562 } | 1564 } |
| 1563 | 1565 |
| 1564 | 1566 |
| 1565 UNIT_TEST_CASE(ImportLibrary3) { | 1567 UNIT_TEST_CASE(ImportLibrary3) { |
| 1566 const char* kScriptChars = | 1568 const char* kScriptChars = |
| 1567 "#import('library2.dart');" | 1569 "#import('library2.dart');" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1591 | 1593 |
| 1592 url = Dart_NewString("library1.dart"); | 1594 url = Dart_NewString("library1.dart"); |
| 1593 source = Dart_NewString(kLibrary1Chars); | 1595 source = Dart_NewString(kLibrary1Chars); |
| 1594 Dart_LoadLibrary(url, source); | 1596 Dart_LoadLibrary(url, source); |
| 1595 | 1597 |
| 1596 result = Dart_InvokeStatic(result, | 1598 result = Dart_InvokeStatic(result, |
| 1597 Dart_NewString(""), | 1599 Dart_NewString(""), |
| 1598 Dart_NewString("main"), | 1600 Dart_NewString("main"), |
| 1599 0, | 1601 0, |
| 1600 NULL); | 1602 NULL); |
| 1601 assert(!Dart_IsValid(result)); | 1603 EXPECT(!Dart_IsValid(result)); |
| 1602 EXPECT_STREQ("Duplicate definition : 'foo' is defined in" | 1604 EXPECT_STREQ("Duplicate definition : 'foo' is defined in" |
| 1603 " 'library1.dart' and 'library2.dart'\n", | 1605 " 'library1.dart' and 'library2.dart'\n", |
| 1604 Dart_GetError(result)); | 1606 Dart_GetError(result)); |
| 1605 | 1607 |
| 1606 Dart_ExitScope(); // Exit the Dart API scope. | 1608 Dart_ExitScope(); // Exit the Dart API scope. |
| 1607 } | 1609 } |
| 1608 Dart_ShutdownIsolate(); | 1610 Dart_ShutdownIsolate(); |
| 1609 } | 1611 } |
| 1610 | 1612 |
| 1611 | 1613 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1673 | 1675 |
| 1674 url = Dart_NewString("libraryE.dart"); | 1676 url = Dart_NewString("libraryE.dart"); |
| 1675 source = Dart_NewString(kLibraryEChars); | 1677 source = Dart_NewString(kLibraryEChars); |
| 1676 Dart_LoadLibrary(url, source); | 1678 Dart_LoadLibrary(url, source); |
| 1677 | 1679 |
| 1678 result = Dart_InvokeStatic(result, | 1680 result = Dart_InvokeStatic(result, |
| 1679 Dart_NewString(""), | 1681 Dart_NewString(""), |
| 1680 Dart_NewString("main"), | 1682 Dart_NewString("main"), |
| 1681 0, | 1683 0, |
| 1682 NULL); | 1684 NULL); |
| 1683 assert(!Dart_IsValid(result)); | 1685 EXPECT(!Dart_IsValid(result)); |
| 1684 EXPECT_STREQ("Duplicate definition : 'fooC' is defined in" | 1686 EXPECT_STREQ("Duplicate definition : 'fooC' is defined in" |
| 1685 " 'libraryF.dart' and 'libraryC.dart'\n", | 1687 " 'libraryF.dart' and 'libraryC.dart'\n", |
| 1686 Dart_GetError(result)); | 1688 Dart_GetError(result)); |
| 1687 | 1689 |
| 1688 Dart_ExitScope(); // Exit the Dart API scope. | 1690 Dart_ExitScope(); // Exit the Dart API scope. |
| 1689 } | 1691 } |
| 1690 Dart_ShutdownIsolate(); | 1692 Dart_ShutdownIsolate(); |
| 1691 } | 1693 } |
| 1692 | 1694 |
| 1693 | 1695 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1716 | 1718 |
| 1717 url = Dart_NewString("lib.dart"); | 1719 url = Dart_NewString("lib.dart"); |
| 1718 source = Dart_NewString(kLibraryChars); | 1720 source = Dart_NewString(kLibraryChars); |
| 1719 Dart_LoadLibrary(url, source); | 1721 Dart_LoadLibrary(url, source); |
| 1720 | 1722 |
| 1721 result = Dart_InvokeStatic(result, | 1723 result = Dart_InvokeStatic(result, |
| 1722 Dart_NewString(""), | 1724 Dart_NewString(""), |
| 1723 Dart_NewString("main"), | 1725 Dart_NewString("main"), |
| 1724 0, | 1726 0, |
| 1725 NULL); | 1727 NULL); |
| 1726 assert(Dart_IsValid(result)); | 1728 EXPECT_VALID(result); |
| 1727 | 1729 |
| 1728 Dart_ExitScope(); // Exit the Dart API scope. | 1730 Dart_ExitScope(); // Exit the Dart API scope. |
| 1729 } | 1731 } |
| 1730 Dart_ShutdownIsolate(); | 1732 Dart_ShutdownIsolate(); |
| 1731 } | 1733 } |
| 1732 #endif // TARGET_ARCH_IA32. | 1734 #endif // TARGET_ARCH_IA32. |
| 1733 | 1735 |
| 1734 } // namespace dart | 1736 } // namespace dart |
| OLD | NEW |