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

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

Issue 14200031: Add more tests of typed data serialization (Closed) Base URL: https://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
« no previous file with comments | « no previous file | no next file » | 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) 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_debugger_api.h" 5 #include "include/dart_debugger_api.h"
6 #include "platform/assert.h" 6 #include "platform/assert.h"
7 #include "vm/bigint_operations.h" 7 #include "vm/bigint_operations.h"
8 #include "vm/class_finalizer.h" 8 #include "vm/class_finalizer.h"
9 #include "vm/dart_api_impl.h" 9 #include "vm/dart_api_impl.h"
10 #include "vm/dart_api_message.h" 10 #include "vm/dart_api_message.h"
(...skipping 2166 matching lines...) Expand 10 before | Expand all | Expand 10 after
2177 2177
2178 static void CheckTypedData(Dart_CObject* object, 2178 static void CheckTypedData(Dart_CObject* object,
2179 Dart_CObject::TypedDataType typed_data_type, 2179 Dart_CObject::TypedDataType typed_data_type,
2180 int len) { 2180 int len) {
2181 EXPECT_EQ(Dart_CObject::kTypedData, object->type); 2181 EXPECT_EQ(Dart_CObject::kTypedData, object->type);
2182 EXPECT_EQ(typed_data_type, object->value.as_typed_data.type); 2182 EXPECT_EQ(typed_data_type, object->value.as_typed_data.type);
2183 EXPECT_EQ(len, object->value.as_typed_data.length); 2183 EXPECT_EQ(len, object->value.as_typed_data.length);
2184 } 2184 }
2185 2185
2186 UNIT_TEST_CASE(DartGeneratedListMessagesWithTypedData) { 2186 UNIT_TEST_CASE(DartGeneratedListMessagesWithTypedData) {
2187 const int kArrayLength = 10;
2188 static const char* kScriptChars = 2187 static const char* kScriptChars =
2189 "import 'dart:typeddata';\n" 2188 "import 'dart:typeddata';\n"
2190 "final int kArrayLength = 10;\n"
2191 "getTypedDataList() {\n" 2189 "getTypedDataList() {\n"
2192 " var list = new List(kArrayLength);\n" 2190 " var list = new List(10);\n"
2193 " list[0] = new Int8List(256);\n" 2191 " var index = 0;\n"
2194 " list[1] = new Uint8List(256);\n" 2192 " list[index++] = new Int8List(256);\n"
2195 " list[2] = new Int16List(256);\n" 2193 " list[index++] = new Uint8List(256);\n"
2196 " list[3] = new Uint16List(256);\n" 2194 " list[index++] = new Int16List(256);\n"
2195 " list[index++] = new Uint16List(256);\n"
2196 " list[index++] = new Int32List(256);\n"
2197 " list[index++] = new Uint32List(256);\n"
2198 " list[index++] = new Int64List(256);\n"
2199 " list[index++] = new Uint64List(256);\n"
2200 " list[index++] = new Float32List(256);\n"
2201 " list[index++] = new Float64List(256);\n"
2197 " return list;\n" 2202 " return list;\n"
2198 "}\n" 2203 "}\n"
2199 "getTypedDataViewList() {\n" 2204 "getTypedDataViewList() {\n"
2200 " var list = new List(kArrayLength);\n" 2205 " var list = new List(30);\n"
2201 " list[0] = new Int8List.view(new Int8List(256));\n" 2206 " var index = 0;\n"
2202 " list[1] = new Uint8List.view(new Uint8List(256));\n" 2207 " list[index++] = new Int8List.view(new Int8List(256));\n"
2203 " list[2] = new Int16List.view(new Int16List(256));\n" 2208 " list[index++] = new Uint8List.view(new Uint8List(256));\n"
2204 " list[3] = new Uint16List.view(new Uint16List(256));\n" 2209 " list[index++] = new Int16List.view(new Int16List(256));\n"
2205 " list[4] = new Int8List.view(new Int16List(256));\n" 2210 " list[index++] = new Uint16List.view(new Uint16List(256));\n"
2206 " list[5] = new Uint8List.view(new Uint16List(256));\n" 2211 " list[index++] = new Int32List.view(new Int32List(256));\n"
2207 " list[6] = new Int16List.view(new Int8List(256));\n" 2212 " list[index++] = new Uint32List.view(new Uint32List(256));\n"
2208 " list[7] = new Uint16List.view(new Uint8List(256));\n" 2213 " list[index++] = new Int64List.view(new Int64List(256));\n"
2214 " list[index++] = new Uint64List.view(new Uint64List(256));\n"
2215 " list[index++] = new Float32List.view(new Float32List(256));\n"
2216 " list[index++] = new Float64List.view(new Float64List(256));\n"
2217
2218 " list[index++] = new Int8List.view(new Int16List(256));\n"
2219 " list[index++] = new Uint8List.view(new Uint16List(256));\n"
2220 " list[index++] = new Int8List.view(new Int32List(256));\n"
2221 " list[index++] = new Uint8List.view(new Uint32List(256));\n"
2222 " list[index++] = new Int8List.view(new Int64List(256));\n"
2223 " list[index++] = new Uint8List.view(new Uint64List(256));\n"
2224 " list[index++] = new Int8List.view(new Float32List(256));\n"
2225 " list[index++] = new Uint8List.view(new Float32List(256));\n"
2226 " list[index++] = new Int8List.view(new Float64List(256));\n"
2227 " list[index++] = new Uint8List.view(new Float64List(256));\n"
2228
2229 " list[index++] = new Int16List.view(new Int8List(256));\n"
2230 " list[index++] = new Uint16List.view(new Uint8List(256));\n"
2231 " list[index++] = new Int16List.view(new Int32List(256));\n"
2232 " list[index++] = new Uint16List.view(new Uint32List(256));\n"
2233 " list[index++] = new Int16List.view(new Int64List(256));\n"
2234 " list[index++] = new Uint16List.view(new Uint64List(256));\n"
2235 " list[index++] = new Int16List.view(new Float32List(256));\n"
2236 " list[index++] = new Uint16List.view(new Float32List(256));\n"
2237 " list[index++] = new Int16List.view(new Float64List(256));\n"
2238 " list[index++] = new Uint16List.view(new Float64List(256));\n"
2239 " return list;\n"
2240 "}\n"
2241 "getMultipleTypedDataViewList() {\n"
2242 " var list = new List(10);\n"
2243 " var index = 0;\n"
2244 " var data = new Uint8List(256);\n"
2245 " list[index++] = new Int8List.view(data);\n"
2246 " list[index++] = new Uint8List.view(data);\n"
2247 " list[index++] = new Int16List.view(data);\n"
2248 " list[index++] = new Uint16List.view(data);\n"
2249 " list[index++] = new Int32List.view(data);\n"
2250 " list[index++] = new Uint32List.view(data);\n"
2251 " list[index++] = new Int64List.view(data);\n"
2252 " list[index++] = new Uint64List.view(data);\n"
2253 " list[index++] = new Float32List.view(data);\n"
2254 " list[index++] = new Float64List.view(data);\n"
2209 " return list;\n" 2255 " return list;\n"
2210 "}\n"; 2256 "}\n";
2211 2257
2212 TestCase::CreateTestIsolate(); 2258 TestCase::CreateTestIsolate();
2213 Isolate* isolate = Isolate::Current(); 2259 Isolate* isolate = Isolate::Current();
2214 EXPECT(isolate != NULL); 2260 EXPECT(isolate != NULL);
2215 Dart_EnterScope(); 2261 Dart_EnterScope();
2216 2262
2217 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); 2263 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
2218 EXPECT_VALID(lib); 2264 EXPECT_VALID(lib);
2219 2265
2220 { 2266 {
2221 DARTSCOPE(isolate); 2267 DARTSCOPE(isolate);
2222 { 2268 {
2223 // Generate a list of Uint8Lists from Dart code. 2269 // Generate a list of Uint8Lists from Dart code.
2224 ApiNativeScope scope; 2270 ApiNativeScope scope;
2225 Dart_CObject* root = GetDeserializedDartMessage(lib, "getTypedDataList"); 2271 Dart_CObject* root = GetDeserializedDartMessage(lib, "getTypedDataList");
2226 EXPECT_NOTNULL(root); 2272 EXPECT_NOTNULL(root);
2227 EXPECT_EQ(Dart_CObject::kArray, root->type); 2273 EXPECT_EQ(Dart_CObject::kArray, root->type);
2228 EXPECT_EQ(kArrayLength, root->value.as_array.length); 2274 struct {
2229 CheckTypedData(root->value.as_array.values[0], 2275 Dart_CObject::TypedDataType type;
2230 Dart_CObject::kInt8Array, 2276 int size;
2231 256); 2277 } expected[] = {
2232 CheckTypedData(root->value.as_array.values[1], 2278 { Dart_CObject::kInt8Array, 256},
2233 Dart_CObject::kUint8Array, 2279 { Dart_CObject::kUint8Array, 256},
2234 256); 2280 { Dart_CObject::kInt16Array, 512},
2235 CheckTypedData(root->value.as_array.values[2], 2281 { Dart_CObject::kUint16Array, 512},
2236 Dart_CObject::kInt16Array, 2282 { Dart_CObject::kInt32Array, 1024},
2237 512); 2283 { Dart_CObject::kUint32Array, 1024},
2238 CheckTypedData(root->value.as_array.values[3], 2284 { Dart_CObject::kInt64Array, 2048},
2239 Dart_CObject::kUint16Array, 2285 { Dart_CObject::kUint64Array, 2048},
2240 512); 2286 { Dart_CObject::kFloat32Array, 1024},
2287 { Dart_CObject::kFloat64Array, 2048},
2288 { Dart_CObject::kNumberOfTypedDataTypes, -1 }
2289 };
2290
2291 int i = 0;
2292 while (expected[i].type != Dart_CObject::kNumberOfTypedDataTypes) {
2293 CheckTypedData(root->value.as_array.values[i],
2294 expected[i].type,
2295 expected[i].size);
2296 i++;
2297 }
2298 EXPECT_EQ(i, root->value.as_array.length);
2241 } 2299 }
2242 { 2300 {
2243 // Generate a list of Uint8List views from Dart code. 2301 // Generate a list of Uint8List views from Dart code.
2302
2244 ApiNativeScope scope; 2303 ApiNativeScope scope;
2245 Dart_CObject* root = 2304 Dart_CObject* root =
2246 GetDeserializedDartMessage(lib, "getTypedDataViewList"); 2305 GetDeserializedDartMessage(lib, "getTypedDataViewList");
2247 EXPECT_NOTNULL(root); 2306 EXPECT_NOTNULL(root);
2248 EXPECT_EQ(Dart_CObject::kArray, root->type); 2307 EXPECT_EQ(Dart_CObject::kArray, root->type);
2249 EXPECT_EQ(kArrayLength, root->value.as_array.length); 2308 struct {
2250 CheckTypedData(root->value.as_array.values[0], 2309 Dart_CObject::TypedDataType type;
2251 Dart_CObject::kInt8Array, 2310 int size;
2252 256); 2311 } expected[] = {
2253 CheckTypedData(root->value.as_array.values[1], 2312 { Dart_CObject::kInt8Array, 256},
2254 Dart_CObject::kUint8Array, 2313 { Dart_CObject::kUint8Array, 256},
2255 256); 2314 { Dart_CObject::kInt16Array, 512},
2256 CheckTypedData(root->value.as_array.values[2], 2315 { Dart_CObject::kUint16Array, 512},
2257 Dart_CObject::kInt16Array, 2316 { Dart_CObject::kInt32Array, 1024},
2258 512); 2317 { Dart_CObject::kUint32Array, 1024},
2259 CheckTypedData(root->value.as_array.values[3], 2318 { Dart_CObject::kInt64Array, 2048},
2260 Dart_CObject::kUint16Array, 2319 { Dart_CObject::kUint64Array, 2048},
2261 512); 2320 { Dart_CObject::kFloat32Array, 1024},
2262 CheckTypedData(root->value.as_array.values[4], 2321 { Dart_CObject::kFloat64Array, 2048},
2263 Dart_CObject::kInt8Array, 2322
2264 512); 2323 { Dart_CObject::kInt8Array, 512},
2265 CheckTypedData(root->value.as_array.values[5], 2324 { Dart_CObject::kUint8Array, 512},
2266 Dart_CObject::kUint8Array, 2325 { Dart_CObject::kInt8Array, 1024},
2267 512); 2326 { Dart_CObject::kUint8Array, 1024},
2268 CheckTypedData(root->value.as_array.values[6], 2327 { Dart_CObject::kInt8Array, 2048},
2269 Dart_CObject::kInt16Array, 2328 { Dart_CObject::kUint8Array, 2048},
2270 256); 2329 { Dart_CObject::kInt8Array, 1024},
2271 CheckTypedData(root->value.as_array.values[7], 2330 { Dart_CObject::kUint8Array, 1024},
2272 Dart_CObject::kUint16Array, 2331 { Dart_CObject::kInt8Array, 2048},
2273 256); 2332 { Dart_CObject::kUint8Array, 2048},
2333
2334 { Dart_CObject::kInt16Array, 256},
2335 { Dart_CObject::kUint16Array, 256},
2336 { Dart_CObject::kInt16Array, 1024},
2337 { Dart_CObject::kUint16Array, 1024},
2338 { Dart_CObject::kInt16Array, 2048},
2339 { Dart_CObject::kUint16Array, 2048},
2340 { Dart_CObject::kInt16Array, 1024},
2341 { Dart_CObject::kUint16Array, 1024},
2342 { Dart_CObject::kInt16Array, 2048},
2343 { Dart_CObject::kUint16Array, 2048},
2344
2345 { Dart_CObject::kNumberOfTypedDataTypes, -1 }
2346 };
2347
2348 int i = 0;
2349 while (expected[i].type != Dart_CObject::kNumberOfTypedDataTypes) {
2350 CheckTypedData(root->value.as_array.values[i],
2351 expected[i].type,
2352 expected[i].size);
2353 i++;
2354 }
2355 EXPECT_EQ(i, root->value.as_array.length);
2356 }
2357 {
2358 // Generate a list of Uint8Lists from Dart code.
2359 ApiNativeScope scope;
2360 Dart_CObject* root =
2361 GetDeserializedDartMessage(lib, "getMultipleTypedDataViewList");
2362 EXPECT_NOTNULL(root);
2363 EXPECT_EQ(Dart_CObject::kArray, root->type);
2364 struct {
2365 Dart_CObject::TypedDataType type;
2366 int size;
2367 } expected[] = {
2368 { Dart_CObject::kInt8Array, 256},
2369 { Dart_CObject::kUint8Array, 256},
2370 { Dart_CObject::kInt16Array, 256},
2371 { Dart_CObject::kUint16Array, 256},
2372 { Dart_CObject::kInt32Array, 256},
2373 { Dart_CObject::kUint32Array, 256},
2374 { Dart_CObject::kInt64Array, 256},
2375 { Dart_CObject::kUint64Array, 256},
2376 { Dart_CObject::kFloat32Array, 256},
2377 { Dart_CObject::kFloat64Array, 256},
2378 { Dart_CObject::kNumberOfTypedDataTypes, -1 }
2379 };
2380
2381 int i = 0;
2382 while (expected[i].type != Dart_CObject::kNumberOfTypedDataTypes) {
2383 CheckTypedData(root->value.as_array.values[i],
2384 expected[i].type,
2385 expected[i].size);
2386
2387 // All views point to the same data.
2388 EXPECT_EQ(root->value.as_array.values[0]->value.as_typed_data.values,
2389 root->value.as_array.values[1]->value.as_typed_data.values);
siva 2013/04/18 02:19:52 Should this be root->value.as_array.values[i] inst
Søren Gjesse 2013/04/18 07:28:47 It should. Good catch.
2390 i++;
2391 }
2392 EXPECT_EQ(i, root->value.as_array.length);
2274 } 2393 }
2275 } 2394 }
2276 Dart_ExitScope(); 2395 Dart_ExitScope();
2277 Dart_ShutdownIsolate(); 2396 Dart_ShutdownIsolate();
2278 } 2397 }
2279 2398
2280 2399
2281 UNIT_TEST_CASE(PostCObject) { 2400 UNIT_TEST_CASE(PostCObject) {
2282 // Create a native port for posting from C to Dart 2401 // Create a native port for posting from C to Dart
2283 TestIsolateScope __test_isolate__; 2402 TestIsolateScope __test_isolate__;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
2371 EXPECT(Dart_ErrorHasException(result)); 2490 EXPECT(Dart_ErrorHasException(result));
2372 EXPECT_SUBSTRING("Exception: nulltruefalse123456æøå3.14[]100123456789\n", 2491 EXPECT_SUBSTRING("Exception: nulltruefalse123456æøå3.14[]100123456789\n",
2373 Dart_GetError(result)); 2492 Dart_GetError(result));
2374 2493
2375 Dart_ExitScope(); 2494 Dart_ExitScope();
2376 } 2495 }
2377 2496
2378 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). 2497 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64).
2379 2498
2380 } // namespace dart 2499 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698