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