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

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

Issue 14476009: Enable api tests on ARM. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 8 months 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 #include "platform/assert.h" 6 #include "platform/assert.h"
7 #include "platform/json.h" 7 #include "platform/json.h"
8 #include "platform/utils.h" 8 #include "platform/utils.h"
9 #include "vm/class_finalizer.h" 9 #include "vm/class_finalizer.h"
10 #include "vm/dart_api_impl.h" 10 #include "vm/dart_api_impl.h"
11 #include "vm/dart_api_state.h" 11 #include "vm/dart_api_state.h"
12 #include "vm/thread.h" 12 #include "vm/thread.h"
13 #include "vm/unit_test.h" 13 #include "vm/unit_test.h"
14 #include "vm/verifier.h" 14 #include "vm/verifier.h"
15 15
16 namespace dart { 16 namespace dart {
17 17
18 DECLARE_FLAG(bool, enable_type_checks); 18 DECLARE_FLAG(bool, enable_type_checks);
19 19
20 // Only ia32 and x64 can run execution tests. 20 #if defined(TARGET_ARCH_IA32) || \
21 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) 21 defined(TARGET_ARCH_X64) || \
22 defined(TARGET_ARCH_ARM)
22 23
23 TEST_CASE(ErrorHandleBasics) { 24 TEST_CASE(ErrorHandleBasics) {
24 const char* kScriptChars = 25 const char* kScriptChars =
25 "void testMain() {\n" 26 "void testMain() {\n"
26 " throw new Exception(\"bad news\");\n" 27 " throw new Exception(\"bad news\");\n"
27 "}\n"; 28 "}\n";
28 29
29 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); 30 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
30 31
31 Dart_Handle instance = Dart_True(); 32 Dart_Handle instance = Dart_True();
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 EXPECT(Dart_IsError(result)); 160 EXPECT(Dart_IsError(result));
160 EXPECT(!Dart_ErrorHasException(result)); 161 EXPECT(!Dart_ErrorHasException(result));
161 EXPECT_SUBSTRING("semicolon expected", Dart_GetError(result)); 162 EXPECT_SUBSTRING("semicolon expected", Dart_GetError(result));
162 163
163 result = Dart_Invoke(lib, NewString("Func2"), 0, NULL); 164 result = Dart_Invoke(lib, NewString("Func2"), 0, NULL);
164 EXPECT(Dart_IsError(result)); 165 EXPECT(Dart_IsError(result));
165 EXPECT(Dart_ErrorHasException(result)); 166 EXPECT(Dart_ErrorHasException(result));
166 EXPECT_SUBSTRING("myException", Dart_GetError(result)); 167 EXPECT_SUBSTRING("myException", Dart_GetError(result));
167 } 168 }
168 169
169 #endif 170 #endif
zra 2013/04/24 18:22:26 A comment here will make it easier for me to find
regis 2013/04/24 18:40:47 Done.
170 171
171 172
172 TEST_CASE(Dart_Error) { 173 TEST_CASE(Dart_Error) {
173 Dart_Handle error = Dart_Error("An %s", "error"); 174 Dart_Handle error = Dart_Error("An %s", "error");
174 EXPECT(Dart_IsError(error)); 175 EXPECT(Dart_IsError(error));
175 EXPECT_STREQ("An error", Dart_GetError(error)); 176 EXPECT_STREQ("An error", Dart_GetError(error));
176 } 177 }
177 178
178 179
179 TEST_CASE(Null) { 180 TEST_CASE(Null) {
(...skipping 28 matching lines...) Expand all
208 Dart_Handle class1 = Api::NewHandle(isolate, Object::null_class()); 209 Dart_Handle class1 = Api::NewHandle(isolate, Object::null_class());
209 Dart_Handle class2 = Api::NewHandle(isolate, Object::class_class()); 210 Dart_Handle class2 = Api::NewHandle(isolate, Object::class_class());
210 211
211 EXPECT(Dart_IdentityEquals(class1, class1)); 212 EXPECT(Dart_IdentityEquals(class1, class1));
212 213
213 EXPECT(!Dart_IdentityEquals(class1, class2)); 214 EXPECT(!Dart_IdentityEquals(class1, class2));
214 } 215 }
215 } 216 }
216 217
217 218
218 // Only ia32 and x64 can run execution tests. 219 #if defined(TARGET_ARCH_IA32) || \
219 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) 220 defined(TARGET_ARCH_X64) || \
221 defined(TARGET_ARCH_ARM)
220 222
221 TEST_CASE(ObjectEquals) { 223 TEST_CASE(ObjectEquals) {
222 bool equal = false; 224 bool equal = false;
223 Dart_Handle five = NewString("5"); 225 Dart_Handle five = NewString("5");
224 Dart_Handle five_again = NewString("5"); 226 Dart_Handle five_again = NewString("5");
225 Dart_Handle seven = NewString("7"); 227 Dart_Handle seven = NewString("7");
226 228
227 // Same objects. 229 // Same objects.
228 EXPECT_VALID(Dart_ObjectEquals(five, five, &equal)); 230 EXPECT_VALID(Dart_ObjectEquals(five, five, &equal));
229 EXPECT(equal); 231 EXPECT(equal);
230 232
231 // Equal objects. 233 // Equal objects.
232 EXPECT_VALID(Dart_ObjectEquals(five, five_again, &equal)); 234 EXPECT_VALID(Dart_ObjectEquals(five, five_again, &equal));
233 EXPECT(equal); 235 EXPECT(equal);
234 236
235 // Different objects. 237 // Different objects.
236 EXPECT_VALID(Dart_ObjectEquals(five, seven, &equal)); 238 EXPECT_VALID(Dart_ObjectEquals(five, seven, &equal));
237 EXPECT(!equal); 239 EXPECT(!equal);
238 } 240 }
239 241
240 #endif 242 #endif
zra 2013/04/24 18:22:26 And here. Others follow.
regis 2013/04/24 18:40:47 Done.
241 243
242 244
243 TEST_CASE(InstanceValues) { 245 TEST_CASE(InstanceValues) {
244 EXPECT(Dart_IsInstance(NewString("test"))); 246 EXPECT(Dart_IsInstance(NewString("test")));
245 EXPECT(Dart_IsInstance(Dart_True())); 247 EXPECT(Dart_IsInstance(Dart_True()));
246 248
247 // By convention, our Is*() functions exclude null. 249 // By convention, our Is*() functions exclude null.
248 EXPECT(!Dart_IsInstance(Dart_Null())); 250 EXPECT(!Dart_IsInstance(Dart_Null()));
249 } 251 }
250 252
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 double out1, out2; 331 double out1, out2;
330 Dart_Handle result = Dart_DoubleValue(val1, &out1); 332 Dart_Handle result = Dart_DoubleValue(val1, &out1);
331 EXPECT_VALID(result); 333 EXPECT_VALID(result);
332 EXPECT_EQ(kDoubleVal1, out1); 334 EXPECT_EQ(kDoubleVal1, out1);
333 result = Dart_DoubleValue(val2, &out2); 335 result = Dart_DoubleValue(val2, &out2);
334 EXPECT_VALID(result); 336 EXPECT_VALID(result);
335 EXPECT_EQ(kDoubleVal2, out2); 337 EXPECT_EQ(kDoubleVal2, out2);
336 } 338 }
337 339
338 340
339 // Only ia32 and x64 can run execution tests. 341 #if defined(TARGET_ARCH_IA32) || \
340 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) 342 defined(TARGET_ARCH_X64) || \
343 defined(TARGET_ARCH_ARM)
341 344
342 TEST_CASE(NumberValues) { 345 TEST_CASE(NumberValues) {
343 // TODO(antonm): add various kinds of ints (smi, mint, bigint). 346 // TODO(antonm): add various kinds of ints (smi, mint, bigint).
344 const char* kScriptChars = 347 const char* kScriptChars =
345 "int getInt() { return 1; }\n" 348 "int getInt() { return 1; }\n"
346 "double getDouble() { return 1.0; }\n" 349 "double getDouble() { return 1.0; }\n"
347 "bool getBool() { return false; }\n" 350 "bool getBool() { return false; }\n"
348 "getNull() { return null; }\n"; 351 "getNull() { return null; }\n";
349 Dart_Handle result; 352 Dart_Handle result;
350 // Create a test library and Load up a test script in it. 353 // Create a test library and Load up a test script in it.
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 // Not a String. 632 // Not a String.
630 peer = NULL; 633 peer = NULL;
631 result = Dart_ExternalStringGetPeer(Dart_True(), &peer); 634 result = Dart_ExternalStringGetPeer(Dart_True(), &peer);
632 EXPECT(Dart_IsError(result)); 635 EXPECT(Dart_IsError(result));
633 EXPECT_STREQ("Dart_ExternalStringGetPeer expects argument 'object' to be " 636 EXPECT_STREQ("Dart_ExternalStringGetPeer expects argument 'object' to be "
634 "of type String.", Dart_GetError(result)); 637 "of type String.", Dart_GetError(result));
635 EXPECT(peer == NULL); 638 EXPECT(peer == NULL);
636 } 639 }
637 640
638 641
639 // Only ia32 and x64 can run execution tests. 642 #if defined(TARGET_ARCH_IA32) || \
640 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) 643 defined(TARGET_ARCH_X64) || \
644 defined(TARGET_ARCH_ARM)
641 645
642 static void ExternalStringCallbackFinalizer(void* peer) { 646 static void ExternalStringCallbackFinalizer(void* peer) {
643 *static_cast<int*>(peer) *= 2; 647 *static_cast<int*>(peer) *= 2;
644 } 648 }
645 649
646 650
647 TEST_CASE(ExternalStringCallback) { 651 TEST_CASE(ExternalStringCallback) {
648 int peer8 = 40; 652 int peer8 = 40;
649 int peer16 = 41; 653 int peer16 = 41;
650 654
(...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after
1536 // perturb the test. 1540 // perturb the test.
1537 class GCTestHelper : public AllStatic { 1541 class GCTestHelper : public AllStatic {
1538 public: 1542 public:
1539 static void CollectNewSpace(Heap::ApiCallbacks api_callbacks) { 1543 static void CollectNewSpace(Heap::ApiCallbacks api_callbacks) {
1540 bool invoke_api_callbacks = (api_callbacks == Heap::kInvokeApiCallbacks); 1544 bool invoke_api_callbacks = (api_callbacks == Heap::kInvokeApiCallbacks);
1541 Isolate::Current()->heap()->new_space_->Scavenge(invoke_api_callbacks); 1545 Isolate::Current()->heap()->new_space_->Scavenge(invoke_api_callbacks);
1542 } 1546 }
1543 }; 1547 };
1544 1548
1545 1549
1546 // Only ia32 and x64 can run execution tests. 1550 #if defined(TARGET_ARCH_IA32) || \
1547 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) 1551 defined(TARGET_ARCH_X64) || \
1552 defined(TARGET_ARCH_ARM)
1548 1553
1549 TEST_CASE(WeakPersistentHandle) { 1554 TEST_CASE(WeakPersistentHandle) {
1550 Dart_Handle weak_new_ref = Dart_Null(); 1555 Dart_Handle weak_new_ref = Dart_Null();
1551 EXPECT(Dart_IsNull(weak_new_ref)); 1556 EXPECT(Dart_IsNull(weak_new_ref));
1552 1557
1553 Dart_Handle weak_old_ref = Dart_Null(); 1558 Dart_Handle weak_old_ref = Dart_Null();
1554 EXPECT(Dart_IsNull(weak_old_ref)); 1559 EXPECT(Dart_IsNull(weak_old_ref));
1555 1560
1556 { 1561 {
1557 Dart_EnterScope(); 1562 Dart_EnterScope();
(...skipping 1016 matching lines...) Expand 10 before | Expand all | Expand 10 after
2574 2579
2575 UNIT_TEST_CASE(SetMessageCallbacks) { 2580 UNIT_TEST_CASE(SetMessageCallbacks) {
2576 Dart_Isolate dart_isolate = TestCase::CreateTestIsolate(); 2581 Dart_Isolate dart_isolate = TestCase::CreateTestIsolate();
2577 Dart_SetMessageNotifyCallback(&MyMessageNotifyCallback); 2582 Dart_SetMessageNotifyCallback(&MyMessageNotifyCallback);
2578 Isolate* isolate = reinterpret_cast<Isolate*>(dart_isolate); 2583 Isolate* isolate = reinterpret_cast<Isolate*>(dart_isolate);
2579 EXPECT_EQ(&MyMessageNotifyCallback, isolate->message_notify_callback()); 2584 EXPECT_EQ(&MyMessageNotifyCallback, isolate->message_notify_callback());
2580 Dart_ShutdownIsolate(); 2585 Dart_ShutdownIsolate();
2581 } 2586 }
2582 2587
2583 2588
2584 // Only ia32 and x64 can run execution tests. 2589 #if defined(TARGET_ARCH_IA32) || \
2585 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) 2590 defined(TARGET_ARCH_X64) || \
2591 defined(TARGET_ARCH_ARM)
2586 2592
2587 TEST_CASE(ClassTypedefsEtc) { 2593 TEST_CASE(ClassTypedefsEtc) {
2588 const char* kScriptChars = 2594 const char* kScriptChars =
2589 "class SomeClass {\n" 2595 "class SomeClass {\n"
2590 "}\n" 2596 "}\n"
2591 "typedef void SomeHandler(String a);\n"; 2597 "typedef void SomeHandler(String a);\n";
2592 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); 2598 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
2593 EXPECT_VALID(lib); 2599 EXPECT_VALID(lib);
2594 Dart_Handle normal_cls = Dart_GetClass(lib, NewString("SomeClass")); 2600 Dart_Handle normal_cls = Dart_GetClass(lib, NewString("SomeClass"));
2595 EXPECT_VALID(normal_cls); 2601 EXPECT_VALID(normal_cls);
(...skipping 5042 matching lines...) Expand 10 before | Expand all | Expand 10 after
7638 Dart_Handle result = Dart_Invoke(lib, 7644 Dart_Handle result = Dart_Invoke(lib,
7639 NewString("main"), 7645 NewString("main"),
7640 0, 7646 0,
7641 NULL); 7647 NULL);
7642 int64_t value = 0; 7648 int64_t value = 0;
7643 result = Dart_IntegerToInt64(result, &value); 7649 result = Dart_IntegerToInt64(result, &value);
7644 EXPECT_VALID(result); 7650 EXPECT_VALID(result);
7645 EXPECT_EQ(260, value); 7651 EXPECT_EQ(260, value);
7646 } 7652 }
7647 7653
7648 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). 7654 #endif
7649 7655
7650 } // namespace dart 7656 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698