OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef VM_UNIT_TEST_H_ | 5 #ifndef VM_UNIT_TEST_H_ |
6 #define VM_UNIT_TEST_H_ | 6 #define VM_UNIT_TEST_H_ |
7 | 7 |
8 #include "include/dart_api.h" | 8 #include "include/dart_api.h" |
9 | 9 |
10 #include "vm/ast.h" | 10 #include "vm/ast.h" |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 class TestCase : TestCaseBase { | 155 class TestCase : TestCaseBase { |
156 public: | 156 public: |
157 typedef void (RunEntry)(); | 157 typedef void (RunEntry)(); |
158 | 158 |
159 TestCase(RunEntry* run, const char* name) : TestCaseBase(name), run_(run) { } | 159 TestCase(RunEntry* run, const char* name) : TestCaseBase(name), run_(run) { } |
160 | 160 |
161 static Dart_Handle LoadTestScript(const char* script, | 161 static Dart_Handle LoadTestScript(const char* script, |
162 Dart_NativeEntryResolver resolver); | 162 Dart_NativeEntryResolver resolver); |
163 static Dart_Handle lib(); | 163 static Dart_Handle lib(); |
164 static const char* url() { return "dart:test-lib"; } | 164 static const char* url() { return "dart:test-lib"; } |
| 165 static Dart_Isolate CreateTestIsolateFromSnapshot(uint8_t* buffer) { |
| 166 return CreateIsolate(buffer); |
| 167 } |
| 168 static Dart_Isolate CreateTestIsolate() { |
| 169 return CreateIsolate(NULL); |
| 170 } |
| 171 static Dart_Handle library_handler(Dart_LibraryTag tag, |
| 172 Dart_Handle library, |
| 173 Dart_Handle url); |
165 | 174 |
166 virtual void Run(); | 175 virtual void Run(); |
167 | 176 |
168 private: | 177 private: |
| 178 static Dart_Isolate CreateIsolate(uint8_t* buffer) { |
| 179 char* err; |
| 180 Dart_Isolate isolate = Dart_CreateIsolate(buffer, NULL, &err); |
| 181 if (isolate == NULL) { |
| 182 OS::Print("Creation of isolate failed '%s'\n", err); |
| 183 free(err); |
| 184 } |
| 185 EXPECT(isolate != NULL); |
| 186 return isolate; |
| 187 } |
| 188 |
169 RunEntry* const run_; | 189 RunEntry* const run_; |
170 }; | 190 }; |
171 | 191 |
172 | 192 |
173 class TestIsolateScope { | 193 class TestIsolateScope { |
174 public: | 194 public: |
175 TestIsolateScope() { | 195 TestIsolateScope() { |
176 isolate_ = reinterpret_cast<Isolate*>(Dart_CreateIsolate(NULL, NULL)); | 196 isolate_ = reinterpret_cast<Isolate*>(TestCase::CreateTestIsolate()); |
177 EXPECT(isolate_ != NULL); | |
178 Dart_EnterScope(); // Create a Dart API scope for unit tests. | 197 Dart_EnterScope(); // Create a Dart API scope for unit tests. |
179 } | 198 } |
180 ~TestIsolateScope() { | 199 ~TestIsolateScope() { |
181 Dart_ExitScope(); // Exit the Dart API scope created for unit tests. | 200 Dart_ExitScope(); // Exit the Dart API scope created for unit tests. |
182 ASSERT(isolate_ == Isolate::Current()); | 201 ASSERT(isolate_ == Isolate::Current()); |
183 Dart_ShutdownIsolate(); | 202 Dart_ShutdownIsolate(); |
184 isolate_ = NULL; | 203 isolate_ = NULL; |
185 } | 204 } |
186 Isolate* isolate() const { return isolate_; } | 205 Isolate* isolate() const { return isolate_; } |
187 | 206 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 | 273 |
255 #define EXPECT_VALID(handle) \ | 274 #define EXPECT_VALID(handle) \ |
256 if (Dart_IsError((handle))) { \ | 275 if (Dart_IsError((handle))) { \ |
257 dart::Expect(__FILE__, __LINE__).Fail("invalid handle '%s':\n '%s'\n", \ | 276 dart::Expect(__FILE__, __LINE__).Fail("invalid handle '%s':\n '%s'\n", \ |
258 #handle, Dart_GetError(handle)); \ | 277 #handle, Dart_GetError(handle)); \ |
259 } | 278 } |
260 | 279 |
261 } // namespace dart | 280 } // namespace dart |
262 | 281 |
263 #endif // VM_UNIT_TEST_H_ | 282 #endif // VM_UNIT_TEST_H_ |
OLD | NEW |