30 if (expected.IsSmi()) {
32 return expected.
ptr() == actual.
ptr();
36 if (expected.IsDouble()) {
37 if (actual.IsDouble()) {
40 dbl1 ^= expected.
ptr();
46 if (expected.IsBool()) {
47 if (actual.IsBool()) {
48 return expected.
ptr() == actual.
ptr();
62 EXPECT_EQ(first->
type, second->
type);
63 switch (first->
type) {
110 std::unique_ptr<Message>
message =
120 std::unique_ptr<Message>
message =
130 std::unique_ptr<Message>
message =
135 const Object& serialized_object =
142 EXPECT_NOTNULL(root);
156 const Object& serialized_object =
163 EXPECT_NOTNULL(root);
165 EXPECT_EQ(smi.
Value(), root->value.as_int32);
178 const Object& serialized_object =
185 EXPECT_NOTNULL(root);
187 EXPECT_EQ(smi.
Value(), root->value.as_int32);
201 const Object& serialized_object =
203 EXPECT(serialized_object.IsMint());
208 EXPECT_NOTNULL(root);
225#if defined(ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
267 const Object& serialized_object =
274 EXPECT_NOTNULL(root);
276 EXPECT_EQ(dbl.
value(), root->value.as_double);
289 const Object& serialized_object =
298 EXPECT_NOTNULL(root);
300 EXPECT_EQ(
true, root->value.as_bool);
313 const Object& serialized_object =
320 EXPECT_NOTNULL(root);
322 EXPECT_EQ(
false, root->value.as_bool);
329 std::unique_ptr<Message>
message =
337 EXPECT_EQ(
static_cast<uint64_t
>(12345), obj.
Id());
342 EXPECT_NOTNULL(root);
344 int64_t
id = root->value.as_capability.id;
345 EXPECT_EQ(12345,
id);
349#define TEST_ROUND_TRIP_IDENTICAL(object) \
351 const Object& before = Object::Handle(object); \
352 std::unique_ptr<Message> message = \
353 WriteMessage( false, before, ILLEGAL_PORT, \
354 Message::kNormalPriority); \
355 const Object& after = Object::Handle(ReadMessage(thread, message.get())); \
356 EXPECT(before.ptr() == after.ptr()); \
391 EXPECT_STREQ(cstr, root->value.as_string);
396 TestString(
"This string shall be serialized");
412 const int kArrayLength = 10;
415 for (
int i = 0; i < kArrayLength; i++) {
431 EXPECT_EQ(kArrayLength, root->value.as_array.length);
432 for (
int i = 0; i < kArrayLength; i++) {
442 const int kArrayLength = 10;
447 for (
int i = 0; i < kArrayLength; i++) {
463 EXPECT_EQ(kArrayLength, root->value.as_array.length);
464 for (
int i = 0; i < kArrayLength; i++) {
476 root.value.as_array.values =
nullptr;
499 root.value.as_typed_data.length =
509 root.value.as_typed_data.length =
519 root.value.as_external_typed_data.length =
525TEST_CASE(FailSerializeLargeUnmodifiableExternalTypedData) {
529 root.value.as_external_typed_data.length =
537 const int kArrayLength = 0;
551 EXPECT_EQ(kArrayLength, root->value.as_array.length);
552 EXPECT(root->value.as_array.values ==
nullptr);
558 const int kTypedDataLength = 256;
561 for (
int i = 0; i < kTypedDataLength; i++) {
562 typed_data.SetUint8(i, i);
564 std::unique_ptr<Message>
message =
577 EXPECT_EQ(kTypedDataLength, root->value.as_typed_data.length);
578 for (
int i = 0; i < kTypedDataLength; i++) {
579 EXPECT(root->value.as_typed_data.values[i] == i);
584#define TEST_TYPED_ARRAY(darttype, ctype) \
586 StackZone zone(thread); \
587 const int kArrayLength = 127; \
588 TypedData& array = TypedData::Handle( \
589 TypedData::New(kTypedData##darttype##ArrayCid, kArrayLength)); \
590 intptr_t scale = array.ElementSizeInBytes(); \
591 for (int i = 0; i < kArrayLength; i++) { \
592 array.Set##darttype((i * scale), i); \
594 std::unique_ptr<Message> message = \
595 WriteMessage( false, array, ILLEGAL_PORT, \
596 Message::kNormalPriority); \
597 TypedData& serialized_array = TypedData::Handle(); \
598 serialized_array ^= ReadMessage(thread, message.get()); \
599 for (int i = 0; i < kArrayLength; i++) { \
600 EXPECT_EQ(static_cast<ctype>(i), \
601 serialized_array.Get##darttype(i* scale)); \
605#define TEST_EXTERNAL_TYPED_ARRAY(darttype, ctype) \
607 StackZone zone(thread); \
608 ctype data[] = {0, 11, 22, 33, 44, 55, 66, 77}; \
609 intptr_t length = ARRAY_SIZE(data); \
610 ExternalTypedData& array = ExternalTypedData::Handle( \
611 ExternalTypedData::New(kExternalTypedData##darttype##ArrayCid, \
612 reinterpret_cast<uint8_t*>(data), length)); \
613 intptr_t scale = array.ElementSizeInBytes(); \
614 std::unique_ptr<Message> message = \
615 WriteMessage( false, array, ILLEGAL_PORT, \
616 Message::kNormalPriority); \
617 ExternalTypedData& serialized_array = ExternalTypedData::Handle(); \
618 serialized_array ^= ReadMessage(thread, message.get()); \
619 for (int i = 0; i < length; i++) { \
620 EXPECT_EQ(static_cast<ctype>(data[i]), \
621 serialized_array.Get##darttype(i* scale)); \
625#define TEST_UNMODIFIABLE_EXTERNAL_TYPED_ARRAY(darttype, ctype) \
627 StackZone zone(thread); \
628 ctype data[] = {0, 11, 22, 33, 44, 55, 66, 77}; \
629 intptr_t length = ARRAY_SIZE(data); \
630 ExternalTypedData& array = ExternalTypedData::Handle( \
631 ExternalTypedData::New(kExternalTypedData##darttype##ArrayCid, \
632 reinterpret_cast<uint8_t*>(data), length)); \
633 TypedDataView& view = TypedDataView::Handle(TypedDataView::New( \
634 kUnmodifiableTypedData##darttype##ArrayViewCid, array, 0, length)); \
635 intptr_t scale = array.ElementSizeInBytes(); \
636 std::unique_ptr<Message> message = WriteMessage( \
637 false, view, ILLEGAL_PORT, Message::kNormalPriority); \
638 TypedDataView& serialized_view = TypedDataView::Handle(); \
639 serialized_view ^= ReadMessage(thread, message.get()); \
640 for (int i = 0; i < length; i++) { \
641 EXPECT_EQ(static_cast<ctype>(data[i]), \
642 serialized_view.Get##darttype(i* scale)); \
687 const int kTypedDataLength = 0;
690 std::unique_ptr<Message>
message =
704 EXPECT_EQ(kTypedDataLength, root->value.as_typed_data.length);
705 EXPECT(root->value.as_typed_data.values ==
nullptr);
715 " Fields(int i, int j) : fld1 = i, fld2 = j {}\n"
718 " final int bigint_fld = 0xfffffffffff;\n"
719 " static int%s fld3;\n"
720 " static const int smi_sfld = 10;\n"
721 " static const int bigint_sfld = 0xfffffffffff;\n"
724 " static void equals(x, y) {\n"
725 " if (x != y) throw new ArgumentError('not equal');\n"
728 "class FieldsTest {\n"
729 " static Fields testMain() {\n"
730 " Expect.equals(true, Fields.bigint_sfld == 0xfffffffffff);\n"
731 " Fields obj = new Fields(10, 20);\n"
732 " Expect.equals(true, obj.bigint_fld == 0xfffffffffff);\n"
741 uint8_t* isolate_snapshot_data_buffer;
773 isolate_snapshot_data_buffer = isolate_snapshot_data.Steal(&
unused);
793 free(isolate_snapshot_data_buffer);
798 const char* dart_function) {
822 EXPECT_NOTNULL(root);
824 EXPECT_STREQ(expected, root->value.as_string);
838 EXPECT_NOTNULL(root);
844 "final int kArrayLength = 10;\n"
848 "getAsciiString() {\n"
849 " return \"Hello, world!\";\n"
851 "getNonAsciiString() {\n"
852 " return \"Blåbærgrød\";\n"
854 "getNonBMPString() {\n"
855 " return \"\\u{10000}\\u{1F601}\\u{1F637}\\u{20000}\";\n"
857 "getLeadSurrogateString() {\n"
858 " return String.fromCharCodes([0xd800]);\n"
860 "getTrailSurrogateString() {\n"
861 " return \"\\u{10000}\".substring(1);\n"
863 "getSurrogatesString() {\n"
864 " return String.fromCharCodes([0xdc00, 0xdc00, 0xd800, 0xd800]);\n"
866 "getCrappyString() {\n"
867 " return String.fromCharCodes([0xd800, 32, 0xdc00, 32]);\n"
870 " return List.filled(kArrayLength, null);\n"
875 EXPECT(isolate !=
nullptr);
886 ascii_string_result =
892 non_ascii_string_result =
898 non_bmp_string_result =
904 lead_surrogate_string_result =
910 trail_surrogate_string_result =
916 surrogates_string_result =
922 crappy_string_result =
943 EXPECT_NOTNULL(root);
945 EXPECT_EQ(42, root->value.as_int32);
949 CheckString(non_ascii_string_result,
"Blåbærgrød");
965 const int kArrayLength = 10;
966 const char* kScriptChars =
967 "final int kArrayLength = 10;\n"
969 " return List.filled(kArrayLength, null);\n"
972 " var list = List<int>.filled(kArrayLength, 0);\n"
973 " for (var i = 0; i < kArrayLength; i++) list[i] = i;\n"
976 "getStringList() {\n"
977 " var list = List<String>.filled(kArrayLength, '');\n"
978 " for (var i = 0; i < kArrayLength; i++) list[i] = i.toString();\n"
982 " var list = List<dynamic>.filled(kArrayLength, null);\n"
1008 EXPECT_NOTNULL(root);
1010 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1011 for (
int i = 0; i < kArrayLength; i++) {
1021 EXPECT_NOTNULL(root);
1023 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1024 for (
int i = 0; i < kArrayLength; i++) {
1026 EXPECT_EQ(i, root->value.as_array.values[i]->value.as_int32);
1035 EXPECT_NOTNULL(root);
1037 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1038 for (
int i = 0; i < kArrayLength; i++) {
1042 EXPECT_STREQ(
buffer, root->value.as_array.values[i]->value.as_string);
1050 EXPECT_NOTNULL(root);
1052 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1055 EXPECT_EQ(0, root->value.as_array.values[0]->value.as_int32);
1057 EXPECT_STREQ(
"1", root->value.as_array.values[1]->value.as_string);
1059 EXPECT_EQ(2.2, root->value.as_array.values[2]->value.as_double);
1061 EXPECT_EQ(
true, root->value.as_array.values[3]->value.as_bool);
1063 for (
int i = 0; i < kArrayLength; i++) {
1075 const int kArrayLength = 10;
1076 const char* kScriptChars =
1077 "final int kArrayLength = 10;\n"
1079 " return [null, null, null, null, null, null, null, null, null, null];\n"
1082 " return [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n"
1084 "getStringList() {\n"
1085 " return ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n"
1088 " return <dynamic>[[],"
1094 " [0, 1, 2, 3, 4, 5],"
1095 " [0, 1, 2, 3, 4, 5, 6],"
1096 " [0, 1, 2, 3, 4, 5, 6, 7],"
1097 " [0, 1, 2, 3, 4, 5, 6, 7, 8]];\n"
1099 "getMixedList() {\n"
1104 " list.add(true);\n"
1106 " list.add(<dynamic>[[]]);\n"
1107 " list.add(<dynamic>[<dynamic>[[]]]);\n"
1108 " list.add(<dynamic>[1, <dynamic>[2, [3]]]);\n"
1109 " list.add(<dynamic>[1, <dynamic>[1, 2, [1, 2, 3]]]);\n"
1110 " list.add([1, 2, 3]);\n"
1132 EXPECT_NOTNULL(root);
1134 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1135 for (
int i = 0; i < kArrayLength; i++) {
1145 EXPECT_NOTNULL(root);
1147 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1148 for (
int i = 0; i < kArrayLength; i++) {
1150 EXPECT_EQ(i, root->value.as_array.values[i]->value.as_int32);
1159 EXPECT_NOTNULL(root);
1161 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1162 for (
int i = 0; i < kArrayLength; i++) {
1166 EXPECT_STREQ(
buffer, root->value.as_array.values[i]->value.as_string);
1174 EXPECT_NOTNULL(root);
1176 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1177 for (
int i = 0; i < kArrayLength; i++) {
1178 Dart_CObject* element = root->value.as_array.values[i];
1181 for (
int j = 0; j < i; j++) {
1193 EXPECT_NOTNULL(root);
1195 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1198 EXPECT_EQ(0, root->value.as_array.values[0]->value.as_int32);
1200 EXPECT_STREQ(
"1", root->value.as_array.values[1]->value.as_string);
1202 EXPECT_EQ(2.2, root->value.as_array.values[2]->value.as_double);
1204 EXPECT_EQ(
true, root->value.as_array.values[3]->value.as_bool);
1206 for (
int i = 0; i < kArrayLength; i++) {
1216 element = root->value.as_array.values[4];
1220 element = root->value.as_array.values[5];
1227 element = root->value.as_array.values[6];
1237 element = root->value.as_array.values[7];
1241 EXPECT_EQ(1, e->value.as_int32);
1247 EXPECT_EQ(2, e->value.as_int32);
1253 EXPECT_EQ(3, e->value.as_int32);
1256 element = root->value.as_array.values[8];
1262 EXPECT_EQ(1, e->value.as_int32);
1266 for (
int i = 0; i < 2; i++) {
1269 EXPECT_EQ(i + 1, e->value.as_int32);
1274 for (
int i = 0; i < 3; i++) {
1277 EXPECT_EQ(i + 1, e->value.as_int32);
1281 element = root->value.as_array.values[9];
1283 for (
int i = 0; i < 3; i++) {
1286 EXPECT_EQ(i + 1, e->value.as_int32);
1295 const int kArrayLength = 10;
1296 const char* kScriptChars =
1297 "import 'dart:typed_data';\n"
1298 "final int kArrayLength = 10;\n"
1299 "getStringList() {\n"
1300 " var s = 'Hello, world!';\n"
1301 " var list = List<String>.filled(kArrayLength, '');\n"
1302 " for (var i = 0; i < kArrayLength; i++) list[i] = s;\n"
1306 " var mint = 0x7FFFFFFFFFFFFFFF;\n"
1307 " var list = List.filled(kArrayLength, 0);\n"
1308 " for (var i = 0; i < kArrayLength; i++) list[i] = mint;\n"
1311 "getDoubleList() {\n"
1313 " var list = List<double>.filled(kArrayLength, 0.0);\n"
1314 " for (var i = 0; i < kArrayLength; i++) list[i] = d;\n"
1317 "getTypedDataList() {\n"
1318 " var byte_array = Uint8List(256);\n"
1319 " var list = List<dynamic>.filled(kArrayLength, null);\n"
1320 " for (var i = 0; i < kArrayLength; i++) list[i] = byte_array;\n"
1323 "getTypedDataViewList() {\n"
1324 " var uint8_list = Uint8List(256);\n"
1325 " uint8_list[64] = 1;\n"
1326 " var uint8_list_view =\n"
1327 " Uint8List.view(uint8_list.buffer, 64, 128);\n"
1328 " var list = List<dynamic>.filled(kArrayLength, null);\n"
1329 " for (var i = 0; i < kArrayLength; i++) list[i] = uint8_list_view;\n"
1332 "getMixedList() {\n"
1333 " var list = List<dynamic>.filled(kArrayLength, null);\n"
1334 " for (var i = 0; i < kArrayLength; i++) {\n"
1335 " list[i] = ((i % 2) == 0) ? 'A' : 2.72;\n"
1339 "getSelfRefList() {\n"
1340 " var list = List<dynamic>.filled(kArrayLength, null, growable: true);\n"
1341 " for (var i = 0; i < kArrayLength; i++) {\n"
1342 " list[i] = list;\n"
1365 EXPECT_NOTNULL(root);
1367 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1368 for (
int i = 0; i < kArrayLength; i++) {
1369 Dart_CObject* element = root->value.as_array.values[i];
1370 EXPECT_EQ(root->value.as_array.values[0], element);
1380 EXPECT_NOTNULL(root);
1382 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1383 for (
int i = 0; i < kArrayLength; i++) {
1384 Dart_CObject* element = root->value.as_array.values[i];
1385 EXPECT_EQ(root->value.as_array.values[0], element);
1395 EXPECT_NOTNULL(root);
1397 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1398 Dart_CObject* element = root->value.as_array.values[0];
1401 for (
int i = 1; i < kArrayLength; i++) {
1402 element = root->value.as_array.values[i];
1412 EXPECT_NOTNULL(root);
1414 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1415 for (
int i = 0; i < kArrayLength; i++) {
1416 Dart_CObject* element = root->value.as_array.values[i];
1417 EXPECT_EQ(root->value.as_array.values[0], element);
1425 std::unique_ptr<Message>
message =
1429 EXPECT_NOTNULL(root);
1431 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1432 for (
int i = 0; i < kArrayLength; i++) {
1433 Dart_CObject* element = root->value.as_array.values[i];
1434 EXPECT_EQ(root->value.as_array.values[0], element);
1447 EXPECT_NOTNULL(root);
1449 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1450 Dart_CObject* element = root->value.as_array.values[0];
1453 element = root->value.as_array.values[1];
1456 for (
int i = 2; i < kArrayLength; i++) {
1457 element = root->value.as_array.values[i];
1459 EXPECT_EQ(root->value.as_array.values[0], element);
1473 EXPECT_NOTNULL(root);
1475 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1476 for (
int i = 0; i < kArrayLength; i++) {
1477 Dart_CObject* element = root->value.as_array.values[i];
1479 EXPECT_EQ(root, element);
1488 const int kArrayLength = 10;
1489 const char* kScriptChars =
1490 "import 'dart:typed_data';\n"
1491 "final int kArrayLength = 10;\n"
1492 "getStringList() {\n"
1493 " var s = 'Hello, world!';\n"
1494 " var list = [s, s, s, s, s, s, s, s, s, s];\n"
1498 " var mint = 0x7FFFFFFFFFFFFFFF;\n"
1499 " var list = [mint, mint, mint, mint, mint,\n"
1500 " mint, mint, mint, mint, mint];\n"
1503 "getDoubleList() {\n"
1505 " var list = [3.14, 3.14, 3.14, 3.14, 3.14, 3.14];\n"
1506 " list.add(3.14);\n"
1507 " list.add(3.14);\n"
1508 " list.add(3.14);\n"
1509 " list.add(3.14);\n"
1512 "getTypedDataList() {\n"
1513 " var byte_array = new Uint8List(256);\n"
1515 " for (var i = 0; i < kArrayLength; i++) {\n"
1516 " list.add(byte_array);\n"
1520 "getTypedDataViewList() {\n"
1521 " var uint8_list = new Uint8List(256);\n"
1522 " uint8_list[64] = 1;\n"
1523 " var uint8_list_view =\n"
1524 " new Uint8List.view(uint8_list.buffer, 64, 128);\n"
1526 " for (var i = 0; i < kArrayLength; i++) {\n"
1527 " list.add(uint8_list_view);\n"
1531 "getMixedList() {\n"
1533 " for (var i = 0; i < kArrayLength; i++) {\n"
1534 " list.add(((i % 2) == 0) ? '.' : 2.72);\n"
1538 "getSelfRefList() {\n"
1540 " for (var i = 0; i < kArrayLength; i++) {\n"
1541 " list.add(list);\n"
1564 EXPECT_NOTNULL(root);
1566 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1567 for (
int i = 0; i < kArrayLength; i++) {
1568 Dart_CObject* element = root->value.as_array.values[i];
1569 EXPECT_EQ(root->value.as_array.values[0], element);
1579 EXPECT_NOTNULL(root);
1581 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1582 for (
int i = 0; i < kArrayLength; i++) {
1583 Dart_CObject* element = root->value.as_array.values[i];
1584 EXPECT_EQ(root->value.as_array.values[0], element);
1594 EXPECT_NOTNULL(root);
1596 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1597 Dart_CObject* element = root->value.as_array.values[0];
1600 for (
int i = 1; i < kArrayLength; i++) {
1601 element = root->value.as_array.values[i];
1611 EXPECT_NOTNULL(root);
1613 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1614 for (
int i = 0; i < kArrayLength; i++) {
1615 Dart_CObject* element = root->value.as_array.values[i];
1616 EXPECT_EQ(root->value.as_array.values[0], element);
1624 std::unique_ptr<Message>
message =
1628 EXPECT_NOTNULL(root);
1630 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1631 for (
int i = 0; i < kArrayLength; i++) {
1632 Dart_CObject* element = root->value.as_array.values[i];
1633 EXPECT_EQ(root->value.as_array.values[0], element);
1646 EXPECT_NOTNULL(root);
1648 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1649 Dart_CObject* element = root->value.as_array.values[0];
1652 element = root->value.as_array.values[1];
1655 for (
int i = 2; i < kArrayLength; i++) {
1656 Dart_CObject* element = root->value.as_array.values[i];
1658 EXPECT_EQ(root->value.as_array.values[0], element);
1672 EXPECT_NOTNULL(root);
1674 EXPECT_EQ(kArrayLength, root->value.as_array.length);
1675 for (
int i = 0; i < kArrayLength; i++) {
1676 Dart_CObject* element = root->value.as_array.values[i];
1678 EXPECT_EQ(root, element);
1695 static const char* kScriptChars =
1696 "import 'dart:typed_data';\n"
1697 "getTypedDataList() {\n"
1698 " var list = List<dynamic>.filled(13, null);\n"
1700 " list[index++] = Int8List(256);\n"
1701 " list[index++] = Uint8List(256);\n"
1702 " list[index++] = Int16List(256);\n"
1703 " list[index++] = Uint16List(256);\n"
1704 " list[index++] = Int32List(256);\n"
1705 " list[index++] = Uint32List(256);\n"
1706 " list[index++] = Int64List(256);\n"
1707 " list[index++] = Uint64List(256);\n"
1708 " list[index++] = Float32List(256);\n"
1709 " list[index++] = Float64List(256);\n"
1710 " list[index++] = Int32x4List(256);\n"
1711 " list[index++] = Float32x4List(256);\n"
1712 " list[index++] = Float64x2List(256);\n"
1715 "getTypedDataViewList() {\n"
1716 " var list = List<dynamic>.filled(45, null);\n"
1718 " list[index++] = Int8List.view(Int8List(256).buffer);\n"
1719 " list[index++] = Uint8List.view(Uint8List(256).buffer);\n"
1720 " list[index++] = Int16List.view(new Int16List(256).buffer);\n"
1721 " list[index++] = Uint16List.view(new Uint16List(256).buffer);\n"
1722 " list[index++] = Int32List.view(new Int32List(256).buffer);\n"
1723 " list[index++] = Uint32List.view(new Uint32List(256).buffer);\n"
1724 " list[index++] = Int64List.view(new Int64List(256).buffer);\n"
1725 " list[index++] = Uint64List.view(new Uint64List(256).buffer);\n"
1726 " list[index++] = Float32List.view(new Float32List(256).buffer);\n"
1727 " list[index++] = Float64List.view(new Float64List(256).buffer);\n"
1728 " list[index++] = Int32x4List.view(new Int32x4List(256).buffer);\n"
1729 " list[index++] = Float32x4List.view(new Float32x4List(256).buffer);\n"
1730 " list[index++] = Float64x2List.view(new Float64x2List(256).buffer);\n"
1732 " list[index++] = Int8List.view(new Int16List(256).buffer);\n"
1733 " list[index++] = Uint8List.view(new Uint16List(256).buffer);\n"
1734 " list[index++] = Int8List.view(new Int32List(256).buffer);\n"
1735 " list[index++] = Uint8List.view(new Uint32List(256).buffer);\n"
1736 " list[index++] = Int8List.view(new Int64List(256).buffer);\n"
1737 " list[index++] = Uint8List.view(new Uint64List(256).buffer);\n"
1738 " list[index++] = Int8List.view(new Float32List(256).buffer);\n"
1739 " list[index++] = Uint8List.view(new Float32List(256).buffer);\n"
1740 " list[index++] = Int8List.view(new Float64List(256).buffer);\n"
1741 " list[index++] = Uint8List.view(new Float64List(256).buffer);\n"
1742 " list[index++] = Int8List.view(new Int32x4List(256).buffer);\n"
1743 " list[index++] = Uint8List.view(new Int32x4List(256).buffer);\n"
1744 " list[index++] = Int8List.view(new Float32x4List(256).buffer);\n"
1745 " list[index++] = Uint8List.view(new Float32x4List(256).buffer);\n"
1746 " list[index++] = Int8List.view(new Float64x2List(256).buffer);\n"
1747 " list[index++] = Uint8List.view(new Float64x2List(256).buffer);\n"
1749 " list[index++] = Int16List.view(new Int8List(256).buffer);\n"
1750 " list[index++] = Uint16List.view(new Uint8List(256).buffer);\n"
1751 " list[index++] = Int16List.view(new Int32List(256).buffer);\n"
1752 " list[index++] = Uint16List.view(new Uint32List(256).buffer);\n"
1753 " list[index++] = Int16List.view(new Int64List(256).buffer);\n"
1754 " list[index++] = Uint16List.view(new Uint64List(256).buffer);\n"
1755 " list[index++] = Int16List.view(new Float32List(256).buffer);\n"
1756 " list[index++] = Uint16List.view(new Float32List(256).buffer);\n"
1757 " list[index++] = Int16List.view(new Float64List(256).buffer);\n"
1758 " list[index++] = Uint16List.view(new Float64List(256).buffer);\n"
1759 " list[index++] = Int16List.view(new Int32x4List(256).buffer);\n"
1760 " list[index++] = Uint16List.view(new Int32x4List(256).buffer);\n"
1761 " list[index++] = Int16List.view(new Float32x4List(256).buffer);\n"
1762 " list[index++] = Uint16List.view(new Float32x4List(256).buffer);\n"
1763 " list[index++] = Int16List.view(new Float64x2List(256).buffer);\n"
1764 " list[index++] = Uint16List.view(new Float64x2List(256).buffer);\n"
1767 "getMultipleTypedDataViewList() {\n"
1768 " var list = List<dynamic>.filled(13, null);\n"
1770 " var data = Uint8List(256).buffer;\n"
1771 " list[index++] = Int8List.view(data);\n"
1772 " list[index++] = Uint8List.view(data);\n"
1773 " list[index++] = Int16List.view(data);\n"
1774 " list[index++] = Uint16List.view(data);\n"
1775 " list[index++] = Int32List.view(data);\n"
1776 " list[index++] = Uint32List.view(data);\n"
1777 " list[index++] = Int64List.view(data);\n"
1778 " list[index++] = Uint64List.view(data);\n"
1779 " list[index++] = Float32List.view(data);\n"
1780 " list[index++] = Float64List.view(data);\n"
1781 " list[index++] = Int32x4List.view(data);\n"
1782 " list[index++] = Float32x4List.view(data);\n"
1783 " list[index++] = Float64x2List.view(data);\n"
1805 EXPECT_NOTNULL(root);
1825 EXPECT_EQ(i, root->value.as_array.length);
1829 std::unique_ptr<Message>
message =
1833 EXPECT_NOTNULL(root);
1873 EXPECT_EQ(i, root->value.as_array.length);
1877 std::unique_ptr<Message>
message =
1881 EXPECT_NOTNULL(root);
1901 EXPECT_EQ(root->value.as_array.values[0]->value.as_typed_data.values,
1902 root->value.as_array.values[i]->value.as_typed_data.values);
1905 EXPECT_EQ(i, root->value.as_array.length);
1920 const char* kScriptChars =
1921 "import 'dart:isolate';\n"
1923 " var messageCount = 0;\n"
1924 " var exception = '';\n"
1925 " var port = new RawReceivePort();\n"
1926 " var sendPort = port.sendPort;\n"
1927 " port.handler = (message) {\n"
1928 " if (messageCount < 9) {\n"
1929 " exception = '$exception${message}';\n"
1931 " exception = '$exception${message.length}';\n"
1932 " for (int i = 0; i < message.length; i++) {\n"
1933 " exception = '$exception${message[i]}';\n"
1936 " messageCount++;\n"
1937 " if (messageCount == 13) throw new Exception(exception);\n"
1939 " return sendPort;\n"
1957 object.value.as_bool =
true;
1961 object.value.as_bool =
false;
1965 object.value.as_int32 = 123;
1969 object.value.as_string =
const_cast<char*
>(
"456");
1973 object.value.as_string =
const_cast<char*
>(
"æøå");
1977 object.value.as_string =
const_cast<char*
>(
"");
1981 object.value.as_double = 3.14;
1985 object.value.as_array.length = 0;
1988 const int kArrayLength = 10;
1994 for (
int i = 0; i < kArrayLength; i++) {
2005 uint8_t
data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
2007 object.value.as_typed_data.values =
data;
2012 uint8_t* external_data =
reinterpret_cast<uint8_t*
>(
malloc(
sizeof(
data)));
2013 memmove(external_data,
data,
sizeof(
data));
2015 object.value.as_external_typed_data.data = external_data;
2016 object.value.as_external_typed_data.peer = external_data;
2022 static const uint8_t unmodifiable_data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
2023 object.value.as_external_typed_data.length =
ARRAY_SIZE(unmodifiable_data);
2024 object.value.as_external_typed_data.data =
2025 const_cast<uint8_t*
>(unmodifiable_data);
2026 object.value.as_external_typed_data.peer =
nullptr;
2027 object.value.as_external_typed_data.callback =
NoopFinalizer;
2035 "nulltruefalse123456æøå3.14[]"
2036 "100123456789901234567890123456789012345678\n",
2045 uint8_t
buffer[4] = {0, 0, 0, 0};
static ObjectPtr UnwrapHandle(Dart_Handle object)
static Dart_Handle CheckAndFinalizePendingClasses(Thread *thread)
static constexpr intptr_t kMaxElements
static ArrayPtr New(intptr_t len, Heap::Space space=Heap::kNew)
virtual bool CanonicalizeEquals(const Instance &other) const
void SetAt(intptr_t index, const Object &value) const
static const Bool & False()
static const Bool & True()
static CapabilityPtr New(uint64_t id, Heap::Space space=Heap::kNew)
static DoublePtr New(double d, Heap::Space space=Heap::kNew)
static intptr_t MaxElements(intptr_t class_id)
void WriteFullSnapshot(GrowableArray< LoadingUnitSerializationData * > *data=nullptr)
static constexpr intptr_t kInitialSize
static IntegerPtr New(const String &str, Heap::Space space=Heap::kNew)
static Isolate * Current()
static void static void PrintErr(const char *format,...) PRINTF_ATTRIBUTE(1
static char * SCreate(Zone *zone, const char *format,...) PRINTF_ATTRIBUTE(2
static ClassPtr pc_descriptors_class()
static ClassPtr class_class()
static ClassPtr exception_handlers_class()
static ClassPtr instructions_class()
static ClassPtr type_arguments_class()
static ClassPtr context_class()
static ClassPtr code_class()
virtual const char * ToCString() const
static ClassPtr library_class()
static ClassPtr field_class()
static ClassPtr script_class()
static ClassPtr context_scope_class()
static ClassPtr function_class()
static SmiPtr New(intptr_t value)
static constexpr intptr_t kMaxValue
static constexpr intptr_t kMinValue
bool Equals(const String &str) const
static StringPtr New(const char *cstr, Heap::Space space=Heap::kNew)
static Dart_Handle LoadTestScript(const char *script, Dart_NativeEntryResolver resolver, const char *lib_uri=RESOLVED_USER_TEST_URI, bool finalize=true, bool allow_compile_errors=false)
static const char * NullableTag()
static Dart_Isolate CreateTestIsolate(const char *name=nullptr, void *isolate_group_data=nullptr, void *isolate_data=nullptr)
static Dart_Isolate CreateTestIsolateFromSnapshot(uint8_t *buffer, const char *name=nullptr)
static Thread * Current()
Isolate * isolate() const
int64_t TotalElapsedTime() const
static TypePtr ObjectType()
static bool IsTypedData(const Instance &obj)
static intptr_t MaxElements(intptr_t class_id)
static TypedDataPtr New(intptr_t class_id, intptr_t len, Heap::Space space=Heap::kNew)
static bool IsValid(const uint8_t *utf8_array, intptr_t array_len)
std::unique_ptr< char, decltype(std::free) * > CStringUniquePtr
struct _Dart_Handle * Dart_Handle
@ Dart_TypedData_kFloat32x4
@ Dart_TypedData_kInt32x4
@ Dart_TypedData_kFloat64x2
@ Dart_TypedData_kFloat32
@ Dart_TypedData_kFloat64
@ Dart_TypedData_kInvalid
#define CHECK_API_SCOPE(thread)
@ Dart_CObject_kNumberOfTypes
@ Dart_CObject_kUnmodifiableExternalTypedData
@ Dart_CObject_kTypedData
@ Dart_CObject_kUnsupported
@ Dart_CObject_kExternalTypedData
@ Dart_CObject_kCapability
static const uint8_t buffer[]
#define HANDLESCOPE(thread)
constexpr int64_t kMaxInt64
static bool Equals(const Object &expected, const Object &actual)
constexpr int64_t kMinInt64
ObjectPtr ReadMessage(Thread *thread, Message *message)
DART_EXPORT void Dart_EnterScope()
static std::unique_ptr< Message > GetSerialized(Dart_Handle lib, const char *dart_function)
DART_EXPORT bool Dart_ErrorHasException(Dart_Handle handle)
static void CheckStringInvalid(Dart_Handle dart_string)
DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, Dart_Handle name, int number_of_arguments, Dart_Handle *arguments)
DART_EXPORT bool Dart_IsKernel(const uint8_t *buffer, intptr_t buffer_size)
DART_EXPORT Dart_Handle Dart_GetClass(Dart_Handle library, Dart_Handle class_name)
constexpr int32_t kMinInt32
void * malloc(size_t size)
void TestString(BaseTextBuffer *f, LoopInfo *loop, const GrowableArray< BlockEntryInstr * > &preorder)
DART_EXPORT const char * Dart_GetError(Dart_Handle handle)
DART_EXPORT uint8_t * Dart_ScopeAllocate(intptr_t size)
Dart_CObject * SerializeAndDeserializeMint(Zone *zone, const Mint &mint)
DART_EXPORT bool Dart_IsError(Dart_Handle handle)
void CheckMint(int64_t value)
static void CompareDartCObjects(Dart_CObject *first, Dart_CObject *second)
static void CheckEncodeDecodeMessage(Zone *zone, Dart_CObject *root)
static void CheckString(Dart_Handle dart_string, const char *expected)
Dart_CObject * ReadApiMessage(Zone *zone, Message *message)
static const char * kCustomIsolateScriptChars
Dart_Handle NewString(const char *str)
DART_EXPORT Dart_Handle Dart_RunLoop()
DART_EXPORT void Dart_ExitScope()
std::unique_ptr< Message > WriteMessage(bool same_group, const Object &obj, Dart_Port dest_port, Message::Priority priority)
static void NoopFinalizer(void *isolate_callback_data, void *peer)
constexpr int32_t kMaxInt32
std::unique_ptr< Message > WriteApiMessage(Zone *zone, Dart_CObject *obj, Dart_Port dest_port, Message::Priority priority)
DART_EXPORT bool Dart_PostCObject(Dart_Port port_id, Dart_CObject *message)
DART_EXPORT bool Dart_IsString(Dart_Handle object)
static int8_t data[kExtLength]
static void MallocFinalizer(void *isolate_callback_data, void *peer)
DART_EXPORT Dart_Handle Dart_SendPortGetId(Dart_Handle port, Dart_Port *port_id)
DART_EXPORT void Dart_ShutdownIsolate()
static void CheckTypedData(Dart_CObject *object, Dart_TypedData_Type typed_data_type, int len)
static void ExpectEncodeFail(Zone *zone, Dart_CObject *root)
#define TEST_EXTERNAL_TYPED_ARRAY(darttype, ctype)
#define TEST_TYPED_ARRAY(darttype, ctype)
#define TEST_UNMODIFIABLE_EXTERNAL_TYPED_ARRAY(darttype, ctype)
#define TEST_ROUND_TRIP_IDENTICAL(object)
union _Dart_CObject::@86 value
struct _Dart_CObject::@86::@88 as_capability
struct _Dart_CObject::@86::@90 as_typed_data
struct _Dart_CObject::@86::@89 as_array
struct _Dart_CObject ** values
#define VM_UNIT_TEST_CASE(name)
#define ISOLATE_UNIT_TEST_CASE(name)
#define EXPECT_VALID(handle)
#define ARRAY_SIZE(array)