Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(505)

Side by Side Diff: runtime/vm/dart_api_impl_test.cc

Issue 8401010: Add DART_CHECKVALID (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/isolate_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/isolate_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698