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

Side by Side Diff: vm/object_test.cc

Issue 11443005: Issue - 7123 (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: 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
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 "platform/assert.h" 5 #include "platform/assert.h"
6 #include "vm/assembler.h" 6 #include "vm/assembler.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/isolate.h" 9 #include "vm/isolate.h"
10 #include "vm/object.h" 10 #include "vm/object.h"
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 const String& sub1 = String::Handle(String::SubString(str8, kCharsIndex)); 558 const String& sub1 = String::Handle(String::SubString(str8, kCharsIndex));
559 EXPECT_EQ((kCharsLen - kCharsIndex), sub1.Length()); 559 EXPECT_EQ((kCharsLen - kCharsIndex), sub1.Length());
560 EXPECT_EQ(64, sub1.CharAt(0)); 560 EXPECT_EQ(64, sub1.CharAt(0));
561 EXPECT_EQ(92, sub1.CharAt(1)); 561 EXPECT_EQ(92, sub1.CharAt(1));
562 EXPECT_EQ(0, sub1.CharAt(2)); 562 EXPECT_EQ(0, sub1.CharAt(2));
563 EXPECT_EQ(55, sub1.CharAt(3)); 563 EXPECT_EQ(55, sub1.CharAt(3));
564 EXPECT_EQ(55, sub1.CharAt(4)); 564 EXPECT_EQ(55, sub1.CharAt(4));
565 565
566 const intptr_t kWideCharsLen = 7; 566 const intptr_t kWideCharsLen = 7;
567 uint16_t wide_chars[kWideCharsLen] = { 'H', 'e', 'l', 'l', 'o', 256, '!' }; 567 uint16_t wide_chars[kWideCharsLen] = { 'H', 'e', 'l', 'l', 'o', 256, '!' };
568 const String& two_str = String::Handle(String::New(wide_chars, 568 const String& two_str = String::Handle(String::FromUTF16(wide_chars,
569 kWideCharsLen)); 569 kWideCharsLen));
570 EXPECT(two_str.IsInstance()); 570 EXPECT(two_str.IsInstance());
571 EXPECT(two_str.IsString()); 571 EXPECT(two_str.IsString());
572 EXPECT(two_str.IsTwoByteString()); 572 EXPECT(two_str.IsTwoByteString());
573 EXPECT(!two_str.IsOneByteString()); 573 EXPECT(!two_str.IsOneByteString());
574 EXPECT_EQ(kWideCharsLen, two_str.Length()); 574 EXPECT_EQ(kWideCharsLen, two_str.Length());
575 EXPECT_EQ('H', two_str.CharAt(0)); 575 EXPECT_EQ('H', two_str.CharAt(0));
576 EXPECT_EQ(256, two_str.CharAt(5)); 576 EXPECT_EQ(256, two_str.CharAt(5));
577 const intptr_t kWideCharsIndex = 3; 577 const intptr_t kWideCharsIndex = 3;
578 const String& sub2 = String::Handle(String::SubString(two_str, kCharsIndex)); 578 const String& sub2 = String::Handle(String::SubString(two_str, kCharsIndex));
579 EXPECT_EQ((kWideCharsLen - kWideCharsIndex), sub2.Length()); 579 EXPECT_EQ((kWideCharsLen - kWideCharsIndex), sub2.Length());
580 EXPECT_EQ('l', sub2.CharAt(0)); 580 EXPECT_EQ('l', sub2.CharAt(0));
581 EXPECT_EQ('o', sub2.CharAt(1)); 581 EXPECT_EQ('o', sub2.CharAt(1));
582 EXPECT_EQ(256, sub2.CharAt(2)); 582 EXPECT_EQ(256, sub2.CharAt(2));
583 EXPECT_EQ('!', sub2.CharAt(3)); 583 EXPECT_EQ('!', sub2.CharAt(3));
584 584
585 { 585 {
586 const String& str1 = String::Handle(String::New("My.create")); 586 const String& str1 = String::Handle(String::New("My.create"));
587 const String& str2 = String::Handle(String::New("My")); 587 const String& str2 = String::Handle(String::New("My"));
588 const String& str3 = String::Handle(String::New("create")); 588 const String& str3 = String::Handle(String::New("create"));
589 EXPECT_EQ(true, str1.StartsWith(str2)); 589 EXPECT_EQ(true, str1.StartsWith(str2));
590 EXPECT_EQ(false, str1.StartsWith(str3)); 590 EXPECT_EQ(false, str1.StartsWith(str3));
591 } 591 }
592 592
593 const int32_t four_chars[] = { 'C', 0xFF, 'h', 0xFFFF, 'a', 0x10FFFF, 'r' }; 593 const int32_t four_chars[] = { 'C', 0xFF, 'h', 0xFFFF, 'a', 0x10FFFF, 'r' };
594 const String& four_str = String::Handle(String::New(four_chars, 7)); 594 const String& four_str = String::Handle(String::FromUTF32(four_chars, 7));
595 EXPECT_EQ(four_str.Hash(), four_str.Hash()); 595 EXPECT_EQ(four_str.Hash(), four_str.Hash());
596 EXPECT(four_str.IsTwoByteString()); 596 EXPECT(four_str.IsTwoByteString());
597 EXPECT(!four_str.IsOneByteString()); 597 EXPECT(!four_str.IsOneByteString());
598 EXPECT_EQ(8, four_str.Length()); 598 EXPECT_EQ(8, four_str.Length());
599 EXPECT_EQ('C', four_str.CharAt(0)); 599 EXPECT_EQ('C', four_str.CharAt(0));
600 EXPECT_EQ(0xFF, four_str.CharAt(1)); 600 EXPECT_EQ(0xFF, four_str.CharAt(1));
601 EXPECT_EQ('h', four_str.CharAt(2)); 601 EXPECT_EQ('h', four_str.CharAt(2));
602 EXPECT_EQ(0xFFFF, four_str.CharAt(3)); 602 EXPECT_EQ(0xFFFF, four_str.CharAt(3));
603 EXPECT_EQ('a', four_str.CharAt(4)); 603 EXPECT_EQ('a', four_str.CharAt(4));
604 EXPECT_EQ(0xDBFF, four_str.CharAt(5)); 604 EXPECT_EQ(0xDBFF, four_str.CharAt(5));
605 EXPECT_EQ(0xDFFF, four_str.CharAt(6)); 605 EXPECT_EQ(0xDFFF, four_str.CharAt(6));
606 EXPECT_EQ('r', four_str.CharAt(7)); 606 EXPECT_EQ('r', four_str.CharAt(7));
607 607
608 // Create a 1-byte string from an array of 2-byte elements. 608 // Create a 1-byte string from an array of 2-byte elements.
609 { 609 {
610 const uint16_t char16[] = { 0x00, 0x7F, 0xFF }; 610 const uint16_t char16[] = { 0x00, 0x7F, 0xFF };
611 const String& str8 = String::Handle(String::New(char16, 3)); 611 const String& str8 = String::Handle(String::FromUTF16(char16, 3));
612 EXPECT(str8.IsOneByteString()); 612 EXPECT(str8.IsOneByteString());
613 EXPECT(!str8.IsTwoByteString()); 613 EXPECT(!str8.IsTwoByteString());
614 EXPECT_EQ(0x00, str8.CharAt(0)); 614 EXPECT_EQ(0x00, str8.CharAt(0));
615 EXPECT_EQ(0x7F, str8.CharAt(1)); 615 EXPECT_EQ(0x7F, str8.CharAt(1));
616 EXPECT_EQ(0xFF, str8.CharAt(2)); 616 EXPECT_EQ(0xFF, str8.CharAt(2));
617 } 617 }
618 618
619 // Create a 1-byte string from an array of 4-byte elements. 619 // Create a 1-byte string from an array of 4-byte elements.
620 { 620 {
621 const int32_t char32[] = { 0x00, 0x1F, 0x7F }; 621 const int32_t char32[] = { 0x00, 0x1F, 0x7F };
622 const String& str8 = String::Handle(String::New(char32, 3)); 622 const String& str8 = String::Handle(String::FromUTF32(char32, 3));
623 EXPECT(str8.IsOneByteString()); 623 EXPECT(str8.IsOneByteString());
624 EXPECT(!str8.IsTwoByteString()); 624 EXPECT(!str8.IsTwoByteString());
625 EXPECT_EQ(0x00, str8.CharAt(0)); 625 EXPECT_EQ(0x00, str8.CharAt(0));
626 EXPECT_EQ(0x1F, str8.CharAt(1)); 626 EXPECT_EQ(0x1F, str8.CharAt(1));
627 EXPECT_EQ(0x7F, str8.CharAt(2)); 627 EXPECT_EQ(0x7F, str8.CharAt(2));
628 } 628 }
629 629
630 // Create a 2-byte string from an array of 4-byte elements. 630 // Create a 2-byte string from an array of 4-byte elements.
631 { 631 {
632 const int32_t char32[] = { 0, 0x7FFF, 0xFFFF }; 632 const int32_t char32[] = { 0, 0x7FFF, 0xFFFF };
633 const String& str16 = String::Handle(String::New(char32, 3)); 633 const String& str16 = String::Handle(String::FromUTF32(char32, 3));
634 EXPECT(!str16.IsOneByteString()); 634 EXPECT(!str16.IsOneByteString());
635 EXPECT(str16.IsTwoByteString()); 635 EXPECT(str16.IsTwoByteString());
636 EXPECT_EQ(0x0000, str16.CharAt(0)); 636 EXPECT_EQ(0x0000, str16.CharAt(0));
637 EXPECT_EQ(0x7FFF, str16.CharAt(1)); 637 EXPECT_EQ(0x7FFF, str16.CharAt(1));
638 EXPECT_EQ(0xFFFF, str16.CharAt(2)); 638 EXPECT_EQ(0xFFFF, str16.CharAt(2));
639 } 639 }
640 } 640 }
641 641
642 642
643 TEST_CASE(StringFormat) { 643 TEST_CASE(StringFormat) {
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 } 829 }
830 830
831 // Concatenate empty and non-empty 2-byte strings. 831 // Concatenate empty and non-empty 2-byte strings.
832 { 832 {
833 const String& str1 = String::Handle(String::New("")); 833 const String& str1 = String::Handle(String::New(""));
834 EXPECT(str1.IsOneByteString()); 834 EXPECT(str1.IsOneByteString());
835 EXPECT_EQ(0, str1.Length()); 835 EXPECT_EQ(0, str1.Length());
836 836
837 uint16_t two[] = { 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 }; 837 uint16_t two[] = { 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 };
838 intptr_t two_len = sizeof(two) / sizeof(two[0]); 838 intptr_t two_len = sizeof(two) / sizeof(two[0]);
839 const String& str2 = String::Handle(String::New(two, two_len)); 839 const String& str2 = String::Handle(String::FromUTF16(two, two_len));
840 EXPECT(str2.IsTwoByteString()); 840 EXPECT(str2.IsTwoByteString());
841 EXPECT_EQ(two_len, str2.Length()); 841 EXPECT_EQ(two_len, str2.Length());
842 842
843 // Concat 843 // Concat
844 844
845 const String& str3 = String::Handle(String::Concat(str1, str2)); 845 const String& str3 = String::Handle(String::Concat(str1, str2));
846 EXPECT(str3.IsTwoByteString()); 846 EXPECT(str3.IsTwoByteString());
847 EXPECT_EQ(two_len, str3.Length()); 847 EXPECT_EQ(two_len, str3.Length());
848 EXPECT(str3.Equals(str2)); 848 EXPECT(str3.Equals(str2));
849 849
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 }; 884 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 };
885 intptr_t twotwo_len = sizeof(twotwo) / sizeof(twotwo[0]); 885 intptr_t twotwo_len = sizeof(twotwo) / sizeof(twotwo[0]);
886 EXPECT(str7.IsTwoByteString()); 886 EXPECT(str7.IsTwoByteString());
887 EXPECT(str7.Equals(twotwo, twotwo_len)); 887 EXPECT(str7.Equals(twotwo, twotwo_len));
888 } 888 }
889 889
890 // Concatenating non-empty 2-byte strings. 890 // Concatenating non-empty 2-byte strings.
891 { 891 {
892 const uint16_t one[] = { 0x05D0, 0x05D9, 0x05D9, 0x05DF }; 892 const uint16_t one[] = { 0x05D0, 0x05D9, 0x05D9, 0x05DF };
893 intptr_t one_len = sizeof(one) / sizeof(one[0]); 893 intptr_t one_len = sizeof(one) / sizeof(one[0]);
894 const String& str1 = String::Handle(String::New(one, one_len)); 894 const String& str1 = String::Handle(String::FromUTF16(one, one_len));
895 EXPECT(str1.IsTwoByteString()); 895 EXPECT(str1.IsTwoByteString());
896 EXPECT_EQ(one_len, str1.Length()); 896 EXPECT_EQ(one_len, str1.Length());
897 897
898 const uint16_t two[] = { 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 }; 898 const uint16_t two[] = { 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 };
899 intptr_t two_len = sizeof(two) / sizeof(two[0]); 899 intptr_t two_len = sizeof(two) / sizeof(two[0]);
900 const String& str2 = String::Handle(String::New(two, two_len)); 900 const String& str2 = String::Handle(String::FromUTF16(two, two_len));
901 EXPECT(str2.IsTwoByteString()); 901 EXPECT(str2.IsTwoByteString());
902 EXPECT_EQ(two_len, str2.Length()); 902 EXPECT_EQ(two_len, str2.Length());
903 903
904 // Concat 904 // Concat
905 905
906 const String& one_two_str = String::Handle(String::Concat(str1, str2)); 906 const String& one_two_str = String::Handle(String::Concat(str1, str2));
907 EXPECT(one_two_str.IsTwoByteString()); 907 EXPECT(one_two_str.IsTwoByteString());
908 const uint16_t one_two[] = { 0x05D0, 0x05D9, 0x05D9, 0x05DF, 908 const uint16_t one_two[] = { 0x05D0, 0x05D9, 0x05D9, 0x05DF,
909 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 }; 909 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 };
910 intptr_t one_two_len = sizeof(one_two) / sizeof(one_two[0]); 910 intptr_t one_two_len = sizeof(one_two) / sizeof(one_two[0]);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 970
971 // Concatenated emtpy and non-empty strings built from 4-byte elements. 971 // Concatenated emtpy and non-empty strings built from 4-byte elements.
972 { 972 {
973 const String& str1 = String::Handle(String::New("")); 973 const String& str1 = String::Handle(String::New(""));
974 EXPECT(str1.IsOneByteString()); 974 EXPECT(str1.IsOneByteString());
975 EXPECT_EQ(0, str1.Length()); 975 EXPECT_EQ(0, str1.Length());
976 976
977 int32_t four[] = { 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1 }; 977 int32_t four[] = { 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1 };
978 intptr_t four_len = sizeof(four) / sizeof(four[0]); 978 intptr_t four_len = sizeof(four) / sizeof(four[0]);
979 intptr_t expected_len = (four_len * 2); 979 intptr_t expected_len = (four_len * 2);
980 const String& str2 = String::Handle(String::New(four, four_len)); 980 const String& str2 = String::Handle(String::FromUTF32(four, four_len));
981 EXPECT(str2.IsTwoByteString()); 981 EXPECT(str2.IsTwoByteString());
982 EXPECT_EQ(expected_len, str2.Length()); 982 EXPECT_EQ(expected_len, str2.Length());
983 983
984 // Concat 984 // Concat
985 985
986 const String& str3 = String::Handle(String::Concat(str1, str2)); 986 const String& str3 = String::Handle(String::Concat(str1, str2));
987 EXPECT_EQ(expected_len, str3.Length()); 987 EXPECT_EQ(expected_len, str3.Length());
988 EXPECT(str3.Equals(str2)); 988 EXPECT(str3.Equals(str2));
989 989
990 const String& str4 = String::Handle(String::Concat(str2, str1)); 990 const String& str4 = String::Handle(String::Concat(str2, str1));
(...skipping 26 matching lines...) Expand all
1017 array3.SetAt(0, str2); 1017 array3.SetAt(0, str2);
1018 array3.SetAt(1, str1); 1018 array3.SetAt(1, str1);
1019 array3.SetAt(2, str2); 1019 array3.SetAt(2, str2);
1020 const String& str7 = String::Handle(String::ConcatAll(array3)); 1020 const String& str7 = String::Handle(String::ConcatAll(array3));
1021 EXPECT(str7.IsTwoByteString()); 1021 EXPECT(str7.IsTwoByteString());
1022 int32_t fourfour[] = { 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1, 1022 int32_t fourfour[] = { 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1,
1023 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1 }; 1023 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1 };
1024 intptr_t fourfour_len = sizeof(fourfour) / sizeof(fourfour[0]); 1024 intptr_t fourfour_len = sizeof(fourfour) / sizeof(fourfour[0]);
1025 EXPECT_EQ((fourfour_len * 2), str7.Length()); 1025 EXPECT_EQ((fourfour_len * 2), str7.Length());
1026 const String& fourfour_str = 1026 const String& fourfour_str =
1027 String::Handle(String::New(fourfour, fourfour_len)); 1027 String::Handle(String::FromUTF32(fourfour, fourfour_len));
1028 EXPECT(str7.Equals(fourfour_str)); 1028 EXPECT(str7.Equals(fourfour_str));
1029 } 1029 }
1030 1030
1031 // Concatenate non-empty strings built from 4-byte elements. 1031 // Concatenate non-empty strings built from 4-byte elements.
1032 { 1032 {
1033 const int32_t one[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF }; 1033 const int32_t one[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF };
1034 intptr_t one_len = sizeof(one) / sizeof(one[0]); 1034 intptr_t one_len = sizeof(one) / sizeof(one[0]);
1035 const String& onestr = String::Handle(String::New(one, one_len)); 1035 const String& onestr = String::Handle(String::FromUTF32(one, one_len));
1036 EXPECT(onestr.IsTwoByteString()); 1036 EXPECT(onestr.IsTwoByteString());
1037 EXPECT_EQ((one_len *2), onestr.Length()); 1037 EXPECT_EQ((one_len *2), onestr.Length());
1038 1038
1039 const int32_t two[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9 }; 1039 const int32_t two[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9 };
1040 intptr_t two_len = sizeof(two) / sizeof(two[0]); 1040 intptr_t two_len = sizeof(two) / sizeof(two[0]);
1041 const String& twostr = String::Handle(String::New(two, two_len)); 1041 const String& twostr = String::Handle(String::FromUTF32(two, two_len));
1042 EXPECT(twostr.IsTwoByteString()); 1042 EXPECT(twostr.IsTwoByteString());
1043 EXPECT_EQ((two_len * 2), twostr.Length()); 1043 EXPECT_EQ((two_len * 2), twostr.Length());
1044 1044
1045 // Concat 1045 // Concat
1046 1046
1047 const String& str1 = String::Handle(String::Concat(onestr, twostr)); 1047 const String& str1 = String::Handle(String::Concat(onestr, twostr));
1048 EXPECT(str1.IsTwoByteString()); 1048 EXPECT(str1.IsTwoByteString());
1049 const int32_t one_two[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF, 1049 const int32_t one_two[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF,
1050 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9 }; 1050 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9 };
1051 intptr_t one_two_len = sizeof(one_two) / sizeof(one_two[0]); 1051 intptr_t one_two_len = sizeof(one_two) / sizeof(one_two[0]);
1052 EXPECT_EQ((one_two_len * 2), str1.Length()); 1052 EXPECT_EQ((one_two_len * 2), str1.Length());
1053 const String& one_two_str = 1053 const String& one_two_str =
1054 String::Handle(String::New(one_two, one_two_len)); 1054 String::Handle(String::FromUTF32(one_two, one_two_len));
1055 EXPECT(str1.Equals(one_two_str)); 1055 EXPECT(str1.Equals(one_two_str));
1056 1056
1057 const String& str2 = String::Handle(String::Concat(twostr, onestr)); 1057 const String& str2 = String::Handle(String::Concat(twostr, onestr));
1058 EXPECT(str2.IsTwoByteString()); 1058 EXPECT(str2.IsTwoByteString());
1059 const int32_t two_one[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9, 1059 const int32_t two_one[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9,
1060 0x105D0, 0x105D9, 0x105D9, 0x105DF }; 1060 0x105D0, 0x105D9, 0x105D9, 0x105DF };
1061 intptr_t two_one_len = sizeof(two_one) / sizeof(two_one[0]); 1061 intptr_t two_one_len = sizeof(two_one) / sizeof(two_one[0]);
1062 EXPECT_EQ((two_one_len * 2), str2.Length()); 1062 EXPECT_EQ((two_one_len * 2), str2.Length());
1063 const String& two_one_str = 1063 const String& two_one_str =
1064 String::Handle(String::New(two_one, two_one_len)); 1064 String::Handle(String::FromUTF32(two_one, two_one_len));
1065 EXPECT(str2.Equals(two_one_str)); 1065 EXPECT(str2.Equals(two_one_str));
1066 1066
1067 // ConcatAll 1067 // ConcatAll
1068 1068
1069 const Array& array1 = Array::Handle(Array::New(2)); 1069 const Array& array1 = Array::Handle(Array::New(2));
1070 EXPECT_EQ(2, array1.Length()); 1070 EXPECT_EQ(2, array1.Length());
1071 array1.SetAt(0, onestr); 1071 array1.SetAt(0, onestr);
1072 array1.SetAt(1, twostr); 1072 array1.SetAt(1, twostr);
1073 const String& str3 = String::Handle(String::ConcatAll(array1)); 1073 const String& str3 = String::Handle(String::ConcatAll(array1));
1074 EXPECT(str3.IsTwoByteString()); 1074 EXPECT(str3.IsTwoByteString());
(...skipping 16 matching lines...) Expand all
1091 array3.SetAt(2, onestr); 1091 array3.SetAt(2, onestr);
1092 const String& str5 = String::Handle(String::ConcatAll(array3)); 1092 const String& str5 = String::Handle(String::ConcatAll(array3));
1093 EXPECT(str5.IsTwoByteString()); 1093 EXPECT(str5.IsTwoByteString());
1094 const int32_t one_two_one[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF, 1094 const int32_t one_two_one[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF,
1095 0x105E6, 0x105D5, 0x105D5, 0x105D9, 1095 0x105E6, 0x105D5, 0x105D5, 0x105D9,
1096 0x105D9, 1096 0x105D9,
1097 0x105D0, 0x105D9, 0x105D9, 0x105DF }; 1097 0x105D0, 0x105D9, 0x105D9, 0x105DF };
1098 intptr_t one_two_one_len = sizeof(one_two_one) / sizeof(one_two_one[0]); 1098 intptr_t one_two_one_len = sizeof(one_two_one) / sizeof(one_two_one[0]);
1099 EXPECT_EQ((one_two_one_len * 2), str5.Length()); 1099 EXPECT_EQ((one_two_one_len * 2), str5.Length());
1100 const String& one_two_one_str = 1100 const String& one_two_one_str =
1101 String::Handle(String::New(one_two_one, one_two_one_len)); 1101 String::Handle(String::FromUTF32(one_two_one, one_two_one_len));
1102 EXPECT(str5.Equals(one_two_one_str)); 1102 EXPECT(str5.Equals(one_two_one_str));
1103 1103
1104 const Array& array4 = Array::Handle(Array::New(3)); 1104 const Array& array4 = Array::Handle(Array::New(3));
1105 EXPECT_EQ(3, array4.Length()); 1105 EXPECT_EQ(3, array4.Length());
1106 array4.SetAt(0, twostr); 1106 array4.SetAt(0, twostr);
1107 array4.SetAt(1, onestr); 1107 array4.SetAt(1, onestr);
1108 array4.SetAt(2, twostr); 1108 array4.SetAt(2, twostr);
1109 const String& str6 = String::Handle(String::ConcatAll(array4)); 1109 const String& str6 = String::Handle(String::ConcatAll(array4));
1110 EXPECT(str6.IsTwoByteString()); 1110 EXPECT(str6.IsTwoByteString());
1111 const int32_t two_one_two[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9, 1111 const int32_t two_one_two[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9,
1112 0x105D9, 1112 0x105D9,
1113 0x105D0, 0x105D9, 0x105D9, 0x105DF, 1113 0x105D0, 0x105D9, 0x105D9, 0x105DF,
1114 0x105E6, 0x105D5, 0x105D5, 0x105D9, 1114 0x105E6, 0x105D5, 0x105D5, 0x105D9,
1115 0x105D9 }; 1115 0x105D9 };
1116 intptr_t two_one_two_len = sizeof(two_one_two) / sizeof(two_one_two[0]); 1116 intptr_t two_one_two_len = sizeof(two_one_two) / sizeof(two_one_two[0]);
1117 EXPECT_EQ((two_one_two_len * 2), str6.Length()); 1117 EXPECT_EQ((two_one_two_len * 2), str6.Length());
1118 const String& two_one_two_str = 1118 const String& two_one_two_str =
1119 String::Handle(String::New(two_one_two, two_one_two_len)); 1119 String::Handle(String::FromUTF32(two_one_two, two_one_two_len));
1120 EXPECT(str6.Equals(two_one_two_str)); 1120 EXPECT(str6.Equals(two_one_two_str));
1121 } 1121 }
1122 1122
1123 // Concatenate 1-byte strings and 2-byte strings. 1123 // Concatenate 1-byte strings and 2-byte strings.
1124 { 1124 {
1125 const uint8_t one[] = { 'o', 'n', 'e', ' ', 'b', 'y', 't', 'e' }; 1125 const uint8_t one[] = { 'o', 'n', 'e', ' ', 'b', 'y', 't', 'e' };
1126 intptr_t one_len = sizeof(one) / sizeof(one[0]); 1126 intptr_t one_len = sizeof(one) / sizeof(one[0]);
1127 const String& onestr = String::Handle(String::New(one, one_len)); 1127 const String& onestr = String::Handle(String::FromLatin1(one, one_len));
1128 EXPECT(onestr.IsOneByteString()); 1128 EXPECT(onestr.IsOneByteString());
1129 EXPECT_EQ(one_len, onestr.Length()); 1129 EXPECT_EQ(one_len, onestr.Length());
1130 EXPECT(onestr.Equals(one, one_len)); 1130 EXPECT(onestr.Equals(one, one_len));
1131 1131
1132 uint16_t two[] = { 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 }; 1132 uint16_t two[] = { 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 };
1133 intptr_t two_len = sizeof(two) / sizeof(two[0]); 1133 intptr_t two_len = sizeof(two) / sizeof(two[0]);
1134 const String& twostr = String::Handle(String::New(two, two_len)); 1134 const String& twostr = String::Handle(String::FromUTF16(two, two_len));
1135 EXPECT(twostr.IsTwoByteString()); 1135 EXPECT(twostr.IsTwoByteString());
1136 EXPECT_EQ(two_len, twostr.Length()); 1136 EXPECT_EQ(two_len, twostr.Length());
1137 EXPECT(twostr.Equals(two, two_len)); 1137 EXPECT(twostr.Equals(two, two_len));
1138 1138
1139 // Concat 1139 // Concat
1140 1140
1141 const String& one_two_str = String::Handle(String::Concat(onestr, twostr)); 1141 const String& one_two_str = String::Handle(String::Concat(onestr, twostr));
1142 EXPECT(one_two_str.IsTwoByteString()); 1142 EXPECT(one_two_str.IsTwoByteString());
1143 uint16_t one_two[] = { 'o', 'n', 'e', ' ', 'b', 'y', 't', 'e', 1143 uint16_t one_two[] = { 'o', 'n', 'e', ' ', 'b', 'y', 't', 'e',
1144 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 }; 1144 0x05E6, 0x05D5, 0x05D5, 0x05D9, 0x05D9 };
(...skipping 2105 matching lines...) Expand 10 before | Expand all | Expand 10 after
3250 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); 3250 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint());
3251 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); 3251 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint());
3252 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); 3252 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint());
3253 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); 3253 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint());
3254 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); 3254 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint());
3255 } 3255 }
3256 3256
3257 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). 3257 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64).
3258 3258
3259 } // namespace dart 3259 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698