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

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

Issue 11280150: Add support for surrogates when serializing and deserializing for native ports (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Use iterator reset Created 8 years 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 | runtime/vm/dart_api_message.cc » ('j') | runtime/vm/dart_api_message.cc » ('J')
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_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 532 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 543
544 int32_t data32[] = { 'f', 'o', 'u', 'r', 0x10FFFF }; 544 int32_t data32[] = { 'f', 'o', 'u', 'r', 0x10FFFF };
545 545
546 Dart_Handle str32 = Dart_NewStringFromUTF32(data32, ARRAY_SIZE(data32)); 546 Dart_Handle str32 = Dart_NewStringFromUTF32(data32, ARRAY_SIZE(data32));
547 EXPECT_VALID(str32); 547 EXPECT_VALID(str32);
548 EXPECT(Dart_IsString(str32)); 548 EXPECT(Dart_IsString(str32));
549 EXPECT(!Dart_IsExternalString(str32)); 549 EXPECT(!Dart_IsExternalString(str32));
550 } 550 }
551 551
552 552
553 static void CheckToUTF8(Dart_Handle str,
554 intptr_t expected_len,
555 uint8_t* expected_utf8,
556 intptr_t expected_utf8_len) {
557 intptr_t len;
558 EXPECT_VALID(Dart_StringLength(str, &len));
559 EXPECT_EQ(expected_len, len);
560 uint8_t* utf8_out;
561 EXPECT_VALID(Dart_StringToUTF8(str, &utf8_out, &len));
562 EXPECT_EQ(expected_utf8_len, len);
563 EXPECT(!memcmp(expected_utf8, utf8_out, expected_utf8_len));
564 }
565
566
553 TEST_CASE(NewString) { 567 TEST_CASE(NewString) {
554 const char* ascii = "string"; 568 const char* ascii = "string";
555 Dart_Handle ascii_str = NewString(ascii); 569 Dart_Handle ascii_str = NewString(ascii);
556 EXPECT_VALID(ascii_str); 570 EXPECT_VALID(ascii_str);
557 EXPECT(Dart_IsString(ascii_str)); 571 EXPECT(Dart_IsString(ascii_str));
558 572
559 const char* null = NULL; 573 const char* null = NULL;
560 Dart_Handle null_str = NewString(null); 574 Dart_Handle null_str = NewString(null);
561 EXPECT(Dart_IsError(null_str)); 575 EXPECT(Dart_IsError(null_str));
562 576
563 uint8_t data[] = { 0xE4, 0xBA, 0x8c }; // U+4E8C. 577 {
564 Dart_Handle utf8_str = Dart_NewStringFromUTF8(data, ARRAY_SIZE(data)); 578 uint8_t data[] = { 0xE4, 0xBA, 0x8c }; // U+4E8C.
565 EXPECT_VALID(utf8_str); 579 Dart_Handle utf8_str = Dart_NewStringFromUTF8(data, ARRAY_SIZE(data));
566 EXPECT(Dart_IsString(utf8_str)); 580 EXPECT_VALID(utf8_str);
581 EXPECT(Dart_IsString(utf8_str));
582 CheckToUTF8(utf8_str, 1, data, sizeof(data));
583 }
567 584
568 uint8_t invalid[] = { 0xE4, 0xBA }; // underflow. 585 {
569 Dart_Handle invalid_str = Dart_NewStringFromUTF8(invalid, 586 uint8_t data[] = { 0xE4, 0xBA, 0x8c }; // U+4E8C.
570 ARRAY_SIZE(invalid)); 587 Dart_Handle utf8_str = Dart_NewStringFromUTF8(data, ARRAY_SIZE(data));
571 EXPECT(Dart_IsError(invalid_str)); 588 EXPECT_VALID(utf8_str);
589 EXPECT(Dart_IsString(utf8_str));
590 CheckToUTF8(utf8_str, 1, data, sizeof(data));
591 }
siva 2012/11/28 18:22:46 This test and the one above seem to test identical
Søren Gjesse 2012/11/29 09:06:14 This is all reverted.
592
593 {
594 uint8_t data[] = {0xf0, 0x90, 0x80, 0x80, // U+10000.
595 0xf0, 0x9f, 0x98, 0x81, // U+1F601.
596 0xf0, 0x9f, 0x98, 0xb7, // U+1F637.
597 0xf0, 0xa0, 0x80, 0x80}; // U+20000.
598 Dart_Handle utf8_str = Dart_NewStringFromUTF8(data, ARRAY_SIZE(data));
599 EXPECT_VALID(utf8_str);
600 EXPECT(Dart_IsString(utf8_str));
601 CheckToUTF8(utf8_str, 8, data, sizeof(data));
602 }
603
604 {
605 uint8_t data[] = {0xed, 0xa0, 0x80}; // U+D800.
606 Dart_Handle utf8_str = Dart_NewStringFromUTF8(data, ARRAY_SIZE(data));
607 EXPECT_VALID(utf8_str);
608 EXPECT(Dart_IsString(utf8_str));
609 CheckToUTF8(utf8_str, 1, data, sizeof(data));
610 }
611
612 {
613 uint8_t data[] = {0xed, 0xb0, 0x80}; // U+DC00.
614 Dart_Handle utf8_str = Dart_NewStringFromUTF8(data, ARRAY_SIZE(data));
615 EXPECT_VALID(utf8_str);
616 EXPECT(Dart_IsString(utf8_str));
617 CheckToUTF8(utf8_str, 1, data, sizeof(data));
618 }
619
620 {
621 uint8_t data[] = {0xed, 0xa0, 0x80, // U+D800.
622 0xed, 0xb0, 0x80}; // U+DC00.
623 Dart_Handle utf8_str = Dart_NewStringFromUTF8(data, ARRAY_SIZE(data));
624 EXPECT_VALID(utf8_str);
625 EXPECT(Dart_IsString(utf8_str));
626 uint8_t expected_out[] = {0xf0, 0x90, 0x80, 0x80}; // U+10000.
627 CheckToUTF8(utf8_str, 2, expected_out, sizeof(expected_out));
628 }
629
630 {
631 uint8_t data[] = {0xed, 0xb0, 0x80, // U+DC00.
632 0xed, 0xa0, 0x80}; // U+D800.
633 Dart_Handle utf8_str = Dart_NewStringFromUTF8(data, ARRAY_SIZE(data));
634 EXPECT_VALID(utf8_str);
635 EXPECT(Dart_IsString(utf8_str));
636 CheckToUTF8(utf8_str, 2, data, sizeof(data));
637 }
638
639 {
640 uint8_t invalid[] = { 0xE4, 0xBA }; // underflow.
641 Dart_Handle invalid_str = Dart_NewStringFromUTF8(invalid,
642 ARRAY_SIZE(invalid));
643 EXPECT(Dart_IsError(invalid_str));
644 }
572 } 645 }
573 646
574 647
575 TEST_CASE(ExternalStringGetPeer) { 648 TEST_CASE(ExternalStringGetPeer) {
576 Dart_Handle result; 649 Dart_Handle result;
577 650
578 uint8_t data8[] = { 'o', 'n', 'e', 0x7F }; 651 uint8_t data8[] = { 'o', 'n', 'e', 0x7F };
579 int peer_data = 123; 652 int peer_data = 123;
580 void* peer = NULL; 653 void* peer = NULL;
581 654
(...skipping 6798 matching lines...) Expand 10 before | Expand all | Expand 10 after
7380 Dart_LoadSource(TestCase::lib(), url, source); 7453 Dart_LoadSource(TestCase::lib(), url, source);
7381 7454
7382 dart_args[0] = Dart_NewInteger(1); 7455 dart_args[0] = Dart_NewInteger(1);
7383 result = Dart_Invoke(lib1, NewString("start"), 1, dart_args); 7456 result = Dart_Invoke(lib1, NewString("start"), 1, dart_args);
7384 EXPECT_VALID(result); 7457 EXPECT_VALID(result);
7385 } 7458 }
7386 7459
7387 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). 7460 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64).
7388 7461
7389 } // namespace dart 7462 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/dart_api_message.cc » ('j') | runtime/vm/dart_api_message.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698