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

Side by Side Diff: runtime/vm/unit_test.h

Issue 2666133002: Added new type of unit test, RAW_UNIT_TEST_CASE, which is used for tests that can be flaky if run w… (Closed)
Patch Set: Updated comment in test file. Created 3 years, 10 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
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 #ifndef RUNTIME_VM_UNIT_TEST_H_ 5 #ifndef RUNTIME_VM_UNIT_TEST_H_
6 #define RUNTIME_VM_UNIT_TEST_H_ 6 #define RUNTIME_VM_UNIT_TEST_H_
7 7
8 #include "include/dart_native_api.h" 8 #include "include/dart_native_api.h"
9 9
10 #include "platform/globals.h" 10 #include "platform/globals.h"
(...skipping 10 matching lines...) Expand all
21 #include "vm/simulator.h" 21 #include "vm/simulator.h"
22 #include "vm/zone.h" 22 #include "vm/zone.h"
23 23
24 // The UNIT_TEST_CASE macro is used for tests that do not need any 24 // The UNIT_TEST_CASE macro is used for tests that do not need any
25 // default isolate or zone functionality. 25 // default isolate or zone functionality.
26 #define UNIT_TEST_CASE(name) \ 26 #define UNIT_TEST_CASE(name) \
27 void Dart_Test##name(); \ 27 void Dart_Test##name(); \
28 static const dart::TestCase kRegister##name(Dart_Test##name, #name); \ 28 static const dart::TestCase kRegister##name(Dart_Test##name, #name); \
29 void Dart_Test##name() 29 void Dart_Test##name()
30 30
31 // The RAW_UNIT_TEST_CASE macro is used for tests that do not require any of the
32 // functionality provided by the VM. Tests declared using this macro will be run
33 // before the VM is initialized.
34 #define RAW_UNIT_TEST_CASE(name) \
35 void Dart_Test##name(); \
36 static const dart::RawTestCase kRegister##name(Dart_Test##name, #name); \
37 void Dart_Test##name()
38
31 // The VM_TEST_CASE macro is used for tests that need an isolate and zone 39 // The VM_TEST_CASE macro is used for tests that need an isolate and zone
32 // in order to test its functionality. This macro is used for tests that 40 // in order to test its functionality. This macro is used for tests that
33 // are implemented using the VM code directly and do not use the Dart API 41 // are implemented using the VM code directly and do not use the Dart API
34 // for calling into the VM. The safepoint execution state of threads using 42 // for calling into the VM. The safepoint execution state of threads using
35 // this macro is transitioned from kThreadInNative to kThreadInVM. 43 // this macro is transitioned from kThreadInNative to kThreadInVM.
36 #define VM_TEST_CASE(name) \ 44 #define VM_TEST_CASE(name) \
37 static void Dart_TestHelper##name(Thread* thread); \ 45 static void Dart_TestHelper##name(Thread* thread); \
38 UNIT_TEST_CASE(name) { \ 46 UNIT_TEST_CASE(name) { \
39 TestIsolateScope __test_isolate__; \ 47 TestIsolateScope __test_isolate__; \
40 Thread* __thread__ = Thread::Current(); \ 48 Thread* __thread__ = Thread::Current(); \
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 public: 262 public:
255 explicit TestCaseBase(const char* name); 263 explicit TestCaseBase(const char* name);
256 virtual ~TestCaseBase() {} 264 virtual ~TestCaseBase() {}
257 265
258 const char* name() const { return name_; } 266 const char* name() const { return name_; }
259 267
260 virtual void Run() = 0; 268 virtual void Run() = 0;
261 void RunTest(); 269 void RunTest();
262 270
263 static void RunAll(); 271 static void RunAll();
272 static void RunAllRaw();
273
274 protected:
275 bool raw_test_;
264 276
265 private: 277 private:
266 static TestCaseBase* first_; 278 static TestCaseBase* first_;
267 static TestCaseBase* tail_; 279 static TestCaseBase* tail_;
268 280
269 TestCaseBase* next_; 281 TestCaseBase* next_;
270 const char* name_; 282 const char* name_;
271 283
272 DISALLOW_COPY_AND_ASSIGN(TestCaseBase); 284 DISALLOW_COPY_AND_ASSIGN(TestCaseBase);
273 }; 285 };
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 static void AddTestLib(const char* url, const char* source); 328 static void AddTestLib(const char* url, const char* source);
317 static const char* GetTestLib(const char* url); 329 static const char* GetTestLib(const char* url);
318 330
319 private: 331 private:
320 static Dart_Isolate CreateIsolate(const uint8_t* buffer, const char* name); 332 static Dart_Isolate CreateIsolate(const uint8_t* buffer, const char* name);
321 333
322 RunEntry* const run_; 334 RunEntry* const run_;
323 }; 335 };
324 336
325 337
338 class RawTestCase : TestCaseBase {
339 public:
340 typedef void(RunEntry)();
341
342 RawTestCase(RunEntry* run, const char* name) : TestCaseBase(name), run_(run) {
343 raw_test_ = true;
344 }
345 virtual void Run();
346
347 private:
348 RunEntry* const run_;
349 };
350
351
326 class TestIsolateScope { 352 class TestIsolateScope {
327 public: 353 public:
328 TestIsolateScope() { 354 TestIsolateScope() {
329 isolate_ = reinterpret_cast<Isolate*>(TestCase::CreateTestIsolate()); 355 isolate_ = reinterpret_cast<Isolate*>(TestCase::CreateTestIsolate());
330 Dart_EnterScope(); // Create a Dart API scope for unit tests. 356 Dart_EnterScope(); // Create a Dart API scope for unit tests.
331 } 357 }
332 ~TestIsolateScope() { 358 ~TestIsolateScope() {
333 Dart_ExitScope(); // Exit the Dart API scope created for unit tests. 359 Dart_ExitScope(); // Exit the Dart API scope created for unit tests.
334 ASSERT(isolate_ == Isolate::Current()); 360 ASSERT(isolate_ == Isolate::Current());
335 Dart_ShutdownIsolate(); 361 Dart_ShutdownIsolate();
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 ~SetFlagScope() { *flag_ = original_value_; } 640 ~SetFlagScope() { *flag_ = original_value_; }
615 641
616 private: 642 private:
617 T* flag_; 643 T* flag_;
618 T original_value_; 644 T original_value_;
619 }; 645 };
620 646
621 } // namespace dart 647 } // namespace dart
622 648
623 #endif // RUNTIME_VM_UNIT_TEST_H_ 649 #endif // RUNTIME_VM_UNIT_TEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698