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

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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698