| OLD | NEW |
| 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" |
| (...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 } | 511 } |
| 512 } | 512 } |
| 513 | 513 |
| 514 | 514 |
| 515 TEST_CASE(IsString) { | 515 TEST_CASE(IsString) { |
| 516 uint8_t data8[] = { 'o', 'n', 'e', 0x7F }; | 516 uint8_t data8[] = { 'o', 'n', 'e', 0x7F }; |
| 517 | 517 |
| 518 Dart_Handle str8 = Dart_NewStringFromUTF8(data8, ARRAY_SIZE(data8)); | 518 Dart_Handle str8 = Dart_NewStringFromUTF8(data8, ARRAY_SIZE(data8)); |
| 519 EXPECT_VALID(str8); | 519 EXPECT_VALID(str8); |
| 520 EXPECT(Dart_IsString(str8)); | 520 EXPECT(Dart_IsString(str8)); |
| 521 EXPECT(Dart_IsAsciiString(str8)); | 521 EXPECT(Dart_IsStringLatin1(str8)); |
| 522 EXPECT(!Dart_IsExternalString(str8)); | 522 EXPECT(!Dart_IsExternalString(str8)); |
| 523 | 523 |
| 524 Dart_Handle ext8 = Dart_NewExternalUTF8String(data8, ARRAY_SIZE(data8), | 524 Dart_Handle ext8 = Dart_NewExternalUTF8String(data8, ARRAY_SIZE(data8), |
| 525 NULL, NULL); | 525 NULL, NULL); |
| 526 EXPECT_VALID(ext8); | 526 EXPECT_VALID(ext8); |
| 527 EXPECT(Dart_IsString(ext8)); | 527 EXPECT(Dart_IsString(ext8)); |
| 528 EXPECT(Dart_IsExternalString(ext8)); | 528 EXPECT(Dart_IsExternalString(ext8)); |
| 529 | 529 |
| 530 uint16_t data16[] = { 't', 'w', 'o', 0xFFFF }; | 530 uint16_t data16[] = { 't', 'w', 'o', 0xFFFF }; |
| 531 | 531 |
| 532 Dart_Handle str16 = Dart_NewStringFromUTF16(data16, ARRAY_SIZE(data16)); | 532 Dart_Handle str16 = Dart_NewStringFromUTF16(data16, ARRAY_SIZE(data16)); |
| 533 EXPECT_VALID(str16); | 533 EXPECT_VALID(str16); |
| 534 EXPECT(Dart_IsString(str16)); | 534 EXPECT(Dart_IsString(str16)); |
| 535 EXPECT(!Dart_IsAsciiString(str16)); | 535 EXPECT(!Dart_IsStringLatin1(str16)); |
| 536 EXPECT(!Dart_IsExternalString(str16)); | 536 EXPECT(!Dart_IsExternalString(str16)); |
| 537 | 537 |
| 538 Dart_Handle ext16 = Dart_NewExternalUTF16String(data16, ARRAY_SIZE(data16), | 538 Dart_Handle ext16 = Dart_NewExternalUTF16String(data16, ARRAY_SIZE(data16), |
| 539 NULL, NULL); | 539 NULL, NULL); |
| 540 EXPECT_VALID(ext16); | 540 EXPECT_VALID(ext16); |
| 541 EXPECT(Dart_IsString(ext16)); | 541 EXPECT(Dart_IsString(ext16)); |
| 542 EXPECT(Dart_IsExternalString(ext16)); | 542 EXPECT(Dart_IsExternalString(ext16)); |
| 543 | 543 |
| 544 uint32_t data32[] = { 'f', 'o', 'u', 'r', 0x10FFFF }; | 544 uint32_t data32[] = { 'f', 'o', 'u', 'r', 0x10FFFF }; |
| 545 | 545 |
| (...skipping 6710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7256 EXPECT(Dart_IsString(empty_str)); | 7256 EXPECT(Dart_IsString(empty_str)); |
| 7257 EXPECT(!Dart_IsExternalString(empty_str)); | 7257 EXPECT(!Dart_IsExternalString(empty_str)); |
| 7258 uint8_t ext_empty_str[kLength]; | 7258 uint8_t ext_empty_str[kLength]; |
| 7259 Dart_Handle str = Dart_MakeExternalString(empty_str, | 7259 Dart_Handle str = Dart_MakeExternalString(empty_str, |
| 7260 ext_empty_str, | 7260 ext_empty_str, |
| 7261 kLength, | 7261 kLength, |
| 7262 NULL, | 7262 NULL, |
| 7263 NULL); | 7263 NULL); |
| 7264 EXPECT(Dart_IsString(str)); | 7264 EXPECT(Dart_IsString(str)); |
| 7265 EXPECT(Dart_IsString(empty_str)); | 7265 EXPECT(Dart_IsString(empty_str)); |
| 7266 EXPECT(Dart_IsAsciiString(str)); | 7266 EXPECT(Dart_IsStringLatin1(str)); |
| 7267 EXPECT(Dart_IsAsciiString(empty_str)); | 7267 EXPECT(Dart_IsStringLatin1(empty_str)); |
| 7268 EXPECT(Dart_IsExternalString(str)); | 7268 EXPECT(Dart_IsExternalString(str)); |
| 7269 EXPECT(Dart_IsExternalString(empty_str)); | 7269 EXPECT(Dart_IsExternalString(empty_str)); |
| 7270 EXPECT_VALID(Dart_StringLength(str, &length)); | 7270 EXPECT_VALID(Dart_StringLength(str, &length)); |
| 7271 EXPECT_EQ(0, length); | 7271 EXPECT_EQ(0, length); |
| 7272 | 7272 |
| 7273 // Test with a one byte ascii string. | 7273 // Test with a one byte ascii string. |
| 7274 const char* ascii = "string"; | 7274 const char* ascii = "string"; |
| 7275 expected_length = strlen(ascii); | 7275 expected_length = strlen(ascii); |
| 7276 Dart_Handle ascii_str = NewString(ascii); | 7276 Dart_Handle ascii_str = NewString(ascii); |
| 7277 EXPECT_VALID(ascii_str); | 7277 EXPECT_VALID(ascii_str); |
| 7278 EXPECT(Dart_IsString(ascii_str)); | 7278 EXPECT(Dart_IsString(ascii_str)); |
| 7279 EXPECT(Dart_IsAsciiString(ascii_str)); | 7279 EXPECT(Dart_IsStringLatin1(ascii_str)); |
| 7280 EXPECT(!Dart_IsExternalString(ascii_str)); | 7280 EXPECT(!Dart_IsExternalString(ascii_str)); |
| 7281 EXPECT_VALID(Dart_StringLength(ascii_str, &length)); | 7281 EXPECT_VALID(Dart_StringLength(ascii_str, &length)); |
| 7282 EXPECT_EQ(expected_length, length); | 7282 EXPECT_EQ(expected_length, length); |
| 7283 | 7283 |
| 7284 uint8_t ext_ascii_str[kLength]; | 7284 uint8_t ext_ascii_str[kLength]; |
| 7285 EXPECT_VALID(Dart_StringStorageSize(ascii_str, &size)); | 7285 EXPECT_VALID(Dart_StringStorageSize(ascii_str, &size)); |
| 7286 str = Dart_MakeExternalString(ascii_str, | 7286 str = Dart_MakeExternalString(ascii_str, |
| 7287 ext_ascii_str, | 7287 ext_ascii_str, |
| 7288 size, | 7288 size, |
| 7289 &peer8, | 7289 &peer8, |
| 7290 MakeExternalCback); | 7290 MakeExternalCback); |
| 7291 EXPECT(Dart_IsString(str)); | 7291 EXPECT(Dart_IsString(str)); |
| 7292 EXPECT(Dart_IsString(ascii_str)); | 7292 EXPECT(Dart_IsString(ascii_str)); |
| 7293 EXPECT(Dart_IsAsciiString(str)); | 7293 EXPECT(Dart_IsStringLatin1(str)); |
| 7294 EXPECT(Dart_IsAsciiString(ascii_str)); | 7294 EXPECT(Dart_IsStringLatin1(ascii_str)); |
| 7295 EXPECT(Dart_IsExternalString(str)); | 7295 EXPECT(Dart_IsExternalString(str)); |
| 7296 EXPECT(Dart_IsExternalString(ascii_str)); | 7296 EXPECT(Dart_IsExternalString(ascii_str)); |
| 7297 EXPECT_VALID(Dart_StringLength(str, &length)); | 7297 EXPECT_VALID(Dart_StringLength(str, &length)); |
| 7298 EXPECT_EQ(expected_length, length); | 7298 EXPECT_EQ(expected_length, length); |
| 7299 EXPECT_VALID(Dart_StringLength(ascii_str, &length)); | 7299 EXPECT_VALID(Dart_StringLength(ascii_str, &length)); |
| 7300 EXPECT_EQ(expected_length, length); | 7300 EXPECT_EQ(expected_length, length); |
| 7301 EXPECT(Dart_IdentityEquals(str, ascii_str)); | 7301 EXPECT(Dart_IdentityEquals(str, ascii_str)); |
| 7302 for (intptr_t i = 0; i < length; i++) { | 7302 for (intptr_t i = 0; i < length; i++) { |
| 7303 EXPECT_EQ(ascii[i], ext_ascii_str[i]); | 7303 EXPECT_EQ(ascii[i], ext_ascii_str[i]); |
| 7304 } | 7304 } |
| 7305 | 7305 |
| 7306 uint8_t data[] = { 0xE4, 0xBA, 0x8c }; // U+4E8C. | 7306 uint8_t data[] = { 0xE4, 0xBA, 0x8c }; // U+4E8C. |
| 7307 expected_length = 1; | 7307 expected_length = 1; |
| 7308 Dart_Handle utf16_str = Dart_NewStringFromUTF8(data, ARRAY_SIZE(data)); | 7308 Dart_Handle utf16_str = Dart_NewStringFromUTF8(data, ARRAY_SIZE(data)); |
| 7309 EXPECT_VALID(utf16_str); | 7309 EXPECT_VALID(utf16_str); |
| 7310 EXPECT(Dart_IsString(utf16_str)); | 7310 EXPECT(Dart_IsString(utf16_str)); |
| 7311 EXPECT(!Dart_IsAsciiString(utf16_str)); | 7311 EXPECT(!Dart_IsStringLatin1(utf16_str)); |
| 7312 EXPECT(!Dart_IsExternalString(utf16_str)); | 7312 EXPECT(!Dart_IsExternalString(utf16_str)); |
| 7313 EXPECT_VALID(Dart_StringLength(utf16_str, &length)); | 7313 EXPECT_VALID(Dart_StringLength(utf16_str, &length)); |
| 7314 EXPECT_EQ(expected_length, length); | 7314 EXPECT_EQ(expected_length, length); |
| 7315 | 7315 |
| 7316 // Test with a two byte string. | 7316 // Test with a two byte string. |
| 7317 uint16_t ext_utf16_str[kLength]; | 7317 uint16_t ext_utf16_str[kLength]; |
| 7318 EXPECT_VALID(Dart_StringStorageSize(utf16_str, &size)); | 7318 EXPECT_VALID(Dart_StringStorageSize(utf16_str, &size)); |
| 7319 str = Dart_MakeExternalString(utf16_str, | 7319 str = Dart_MakeExternalString(utf16_str, |
| 7320 ext_utf16_str, | 7320 ext_utf16_str, |
| 7321 size, | 7321 size, |
| 7322 &peer16, | 7322 &peer16, |
| 7323 MakeExternalCback); | 7323 MakeExternalCback); |
| 7324 EXPECT(Dart_IsString(str)); | 7324 EXPECT(Dart_IsString(str)); |
| 7325 EXPECT(Dart_IsString(utf16_str)); | 7325 EXPECT(Dart_IsString(utf16_str)); |
| 7326 EXPECT(!Dart_IsAsciiString(str)); | 7326 EXPECT(!Dart_IsStringLatin1(str)); |
| 7327 EXPECT(!Dart_IsAsciiString(utf16_str)); | 7327 EXPECT(!Dart_IsStringLatin1(utf16_str)); |
| 7328 EXPECT(Dart_IsExternalString(str)); | 7328 EXPECT(Dart_IsExternalString(str)); |
| 7329 EXPECT(Dart_IsExternalString(utf16_str)); | 7329 EXPECT(Dart_IsExternalString(utf16_str)); |
| 7330 EXPECT_VALID(Dart_StringLength(str, &length)); | 7330 EXPECT_VALID(Dart_StringLength(str, &length)); |
| 7331 EXPECT_EQ(expected_length, length); | 7331 EXPECT_EQ(expected_length, length); |
| 7332 EXPECT_VALID(Dart_StringLength(utf16_str, &length)); | 7332 EXPECT_VALID(Dart_StringLength(utf16_str, &length)); |
| 7333 EXPECT_EQ(expected_length, length); | 7333 EXPECT_EQ(expected_length, length); |
| 7334 EXPECT(Dart_IdentityEquals(str, utf16_str)); | 7334 EXPECT(Dart_IdentityEquals(str, utf16_str)); |
| 7335 for (intptr_t i = 0; i < length; i++) { | 7335 for (intptr_t i = 0; i < length; i++) { |
| 7336 EXPECT_EQ(0x4e8c, ext_utf16_str[i]); | 7336 EXPECT_EQ(0x4e8c, ext_utf16_str[i]); |
| 7337 } | 7337 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7380 Dart_LoadSource(TestCase::lib(), url, source); | 7380 Dart_LoadSource(TestCase::lib(), url, source); |
| 7381 | 7381 |
| 7382 dart_args[0] = Dart_NewInteger(1); | 7382 dart_args[0] = Dart_NewInteger(1); |
| 7383 result = Dart_Invoke(lib1, NewString("start"), 1, dart_args); | 7383 result = Dart_Invoke(lib1, NewString("start"), 1, dart_args); |
| 7384 EXPECT_VALID(result); | 7384 EXPECT_VALID(result); |
| 7385 } | 7385 } |
| 7386 | 7386 |
| 7387 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 7387 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
| 7388 | 7388 |
| 7389 } // namespace dart | 7389 } // namespace dart |
| OLD | NEW |