OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <math.h> | 5 #include <math.h> |
6 #include <stdarg.h> | 6 #include <stdarg.h> |
7 | 7 |
8 #include <limits> | 8 #include <limits> |
9 #include <sstream> | 9 #include <sstream> |
10 | 10 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 TruncateUTF8ToByteSize(input, byte_size, output); | 63 TruncateUTF8ToByteSize(input, byte_size, output); |
64 return prev != output->length(); | 64 return prev != output->length(); |
65 } | 65 } |
66 | 66 |
67 } // namespace | 67 } // namespace |
68 | 68 |
69 TEST(StringUtilTest, TruncateUTF8ToByteSize) { | 69 TEST(StringUtilTest, TruncateUTF8ToByteSize) { |
70 std::string output; | 70 std::string output; |
71 | 71 |
72 // Empty strings and invalid byte_size arguments | 72 // Empty strings and invalid byte_size arguments |
73 EXPECT_FALSE(Truncated("", 0, &output)); | 73 EXPECT_FALSE(Truncated(std::string(), 0, &output)); |
74 EXPECT_EQ(output, ""); | 74 EXPECT_EQ(output, ""); |
75 EXPECT_TRUE(Truncated("\xe1\x80\xbf", 0, &output)); | 75 EXPECT_TRUE(Truncated("\xe1\x80\xbf", 0, &output)); |
76 EXPECT_EQ(output, ""); | 76 EXPECT_EQ(output, ""); |
77 EXPECT_FALSE(Truncated("\xe1\x80\xbf", -1, &output)); | 77 EXPECT_FALSE(Truncated("\xe1\x80\xbf", -1, &output)); |
78 EXPECT_FALSE(Truncated("\xe1\x80\xbf", 4, &output)); | 78 EXPECT_FALSE(Truncated("\xe1\x80\xbf", 4, &output)); |
79 | 79 |
80 // Testing the truncation of valid UTF8 correctly | 80 // Testing the truncation of valid UTF8 correctly |
81 EXPECT_TRUE(Truncated("abc", 2, &output)); | 81 EXPECT_TRUE(Truncated("abc", 2, &output)); |
82 EXPECT_EQ(output, "ab"); | 82 EXPECT_EQ(output, "ab"); |
83 EXPECT_TRUE(Truncated("\xc2\x81\xc2\x81", 2, &output)); | 83 EXPECT_TRUE(Truncated("\xc2\x81\xc2\x81", 2, &output)); |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 }; | 312 }; |
313 | 313 |
314 TEST(StringUtilTest, CollapseWhitespaceASCII) { | 314 TEST(StringUtilTest, CollapseWhitespaceASCII) { |
315 for (size_t i = 0; i < arraysize(collapse_cases_ascii); ++i) { | 315 for (size_t i = 0; i < arraysize(collapse_cases_ascii); ++i) { |
316 const collapse_case_ascii& value = collapse_cases_ascii[i]; | 316 const collapse_case_ascii& value = collapse_cases_ascii[i]; |
317 EXPECT_EQ(value.output, CollapseWhitespaceASCII(value.input, value.trim)); | 317 EXPECT_EQ(value.output, CollapseWhitespaceASCII(value.input, value.trim)); |
318 } | 318 } |
319 } | 319 } |
320 | 320 |
321 TEST(StringUtilTest, ContainsOnlyWhitespaceASCII) { | 321 TEST(StringUtilTest, ContainsOnlyWhitespaceASCII) { |
322 EXPECT_TRUE(ContainsOnlyWhitespaceASCII("")); | 322 EXPECT_TRUE(ContainsOnlyWhitespaceASCII(std::string())); |
323 EXPECT_TRUE(ContainsOnlyWhitespaceASCII(" ")); | 323 EXPECT_TRUE(ContainsOnlyWhitespaceASCII(" ")); |
324 EXPECT_TRUE(ContainsOnlyWhitespaceASCII("\t")); | 324 EXPECT_TRUE(ContainsOnlyWhitespaceASCII("\t")); |
325 EXPECT_TRUE(ContainsOnlyWhitespaceASCII("\t \r \n ")); | 325 EXPECT_TRUE(ContainsOnlyWhitespaceASCII("\t \r \n ")); |
326 EXPECT_FALSE(ContainsOnlyWhitespaceASCII("a")); | 326 EXPECT_FALSE(ContainsOnlyWhitespaceASCII("a")); |
327 EXPECT_FALSE(ContainsOnlyWhitespaceASCII("\thello\r \n ")); | 327 EXPECT_FALSE(ContainsOnlyWhitespaceASCII("\thello\r \n ")); |
328 } | 328 } |
329 | 329 |
330 TEST(StringUtilTest, ContainsOnlyWhitespace) { | 330 TEST(StringUtilTest, ContainsOnlyWhitespace) { |
331 EXPECT_TRUE(ContainsOnlyWhitespace(string16())); | 331 EXPECT_TRUE(ContainsOnlyWhitespace(string16())); |
332 EXPECT_TRUE(ContainsOnlyWhitespace(ASCIIToUTF16(" "))); | 332 EXPECT_TRUE(ContainsOnlyWhitespace(ASCIIToUTF16(" "))); |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
705 r.clear(); | 705 r.clear(); |
706 | 706 |
707 size = Tokenize(STR("one, two, three,"), STR(","), &r); | 707 size = Tokenize(STR("one, two, three,"), STR(","), &r); |
708 EXPECT_EQ(3U, size); | 708 EXPECT_EQ(3U, size); |
709 ASSERT_EQ(3U, r.size()); | 709 ASSERT_EQ(3U, r.size()); |
710 EXPECT_EQ(r[0], STR("one")); | 710 EXPECT_EQ(r[0], STR("one")); |
711 EXPECT_EQ(r[1], STR(" two")); | 711 EXPECT_EQ(r[1], STR(" two")); |
712 EXPECT_EQ(r[2], STR(" three")); | 712 EXPECT_EQ(r[2], STR(" three")); |
713 r.clear(); | 713 r.clear(); |
714 | 714 |
715 size = Tokenize(STR(""), STR(","), &r); | 715 size = Tokenize(STR(), STR(","), &r); |
716 EXPECT_EQ(0U, size); | 716 EXPECT_EQ(0U, size); |
717 ASSERT_EQ(0U, r.size()); | 717 ASSERT_EQ(0U, r.size()); |
718 r.clear(); | 718 r.clear(); |
719 | 719 |
720 size = Tokenize(STR(","), STR(","), &r); | 720 size = Tokenize(STR(","), STR(","), &r); |
721 EXPECT_EQ(0U, size); | 721 EXPECT_EQ(0U, size); |
722 ASSERT_EQ(0U, r.size()); | 722 ASSERT_EQ(0U, r.size()); |
723 r.clear(); | 723 r.clear(); |
724 | 724 |
725 size = Tokenize(STR(",;:."), STR(".:;,"), &r); | 725 size = Tokenize(STR(",;:."), STR(".:;,"), &r); |
(...skipping 28 matching lines...) Expand all Loading... |
754 std::vector<std::string> in; | 754 std::vector<std::string> in; |
755 EXPECT_EQ("", JoinString(in, ',')); | 755 EXPECT_EQ("", JoinString(in, ',')); |
756 | 756 |
757 in.push_back("a"); | 757 in.push_back("a"); |
758 EXPECT_EQ("a", JoinString(in, ',')); | 758 EXPECT_EQ("a", JoinString(in, ',')); |
759 | 759 |
760 in.push_back("b"); | 760 in.push_back("b"); |
761 in.push_back("c"); | 761 in.push_back("c"); |
762 EXPECT_EQ("a,b,c", JoinString(in, ',')); | 762 EXPECT_EQ("a,b,c", JoinString(in, ',')); |
763 | 763 |
764 in.push_back(""); | 764 in.push_back(std::string()); |
765 EXPECT_EQ("a,b,c,", JoinString(in, ',')); | 765 EXPECT_EQ("a,b,c,", JoinString(in, ',')); |
766 in.push_back(" "); | 766 in.push_back(" "); |
767 EXPECT_EQ("a|b|c|| ", JoinString(in, '|')); | 767 EXPECT_EQ("a|b|c|| ", JoinString(in, '|')); |
768 } | 768 } |
769 | 769 |
770 // Test for JoinString overloaded with std::string separator | 770 // Test for JoinString overloaded with std::string separator |
771 TEST(StringUtilTest, JoinStringWithString) { | 771 TEST(StringUtilTest, JoinStringWithString) { |
772 std::string separator(", "); | 772 std::string separator(", "); |
773 std::vector<std::string> parts; | 773 std::vector<std::string> parts; |
774 EXPECT_EQ(std::string(), JoinString(parts, separator)); | 774 EXPECT_EQ(std::string(), JoinString(parts, separator)); |
775 | 775 |
776 parts.push_back("a"); | 776 parts.push_back("a"); |
777 EXPECT_EQ("a", JoinString(parts, separator)); | 777 EXPECT_EQ("a", JoinString(parts, separator)); |
778 | 778 |
779 parts.push_back("b"); | 779 parts.push_back("b"); |
780 parts.push_back("c"); | 780 parts.push_back("c"); |
781 EXPECT_EQ("a, b, c", JoinString(parts, separator)); | 781 EXPECT_EQ("a, b, c", JoinString(parts, separator)); |
782 | 782 |
783 parts.push_back(""); | 783 parts.push_back(std::string()); |
784 EXPECT_EQ("a, b, c, ", JoinString(parts, separator)); | 784 EXPECT_EQ("a, b, c, ", JoinString(parts, separator)); |
785 parts.push_back(" "); | 785 parts.push_back(" "); |
786 EXPECT_EQ("a|b|c|| ", JoinString(parts, "|")); | 786 EXPECT_EQ("a|b|c|| ", JoinString(parts, "|")); |
787 } | 787 } |
788 | 788 |
789 // Test for JoinString overloaded with string16 separator | 789 // Test for JoinString overloaded with string16 separator |
790 TEST(StringUtilTest, JoinStringWithString16) { | 790 TEST(StringUtilTest, JoinStringWithString16) { |
791 string16 separator = ASCIIToUTF16(", "); | 791 string16 separator = ASCIIToUTF16(", "); |
792 std::vector<string16> parts; | 792 std::vector<string16> parts; |
793 EXPECT_EQ(string16(), JoinString(parts, separator)); | 793 EXPECT_EQ(string16(), JoinString(parts, separator)); |
(...skipping 11 matching lines...) Expand all Loading... |
805 EXPECT_EQ(ASCIIToUTF16("a|b|c|| "), JoinString(parts, ASCIIToUTF16("|"))); | 805 EXPECT_EQ(ASCIIToUTF16("a|b|c|| "), JoinString(parts, ASCIIToUTF16("|"))); |
806 } | 806 } |
807 | 807 |
808 TEST(StringUtilTest, StartsWith) { | 808 TEST(StringUtilTest, StartsWith) { |
809 EXPECT_TRUE(StartsWithASCII("javascript:url", "javascript", true)); | 809 EXPECT_TRUE(StartsWithASCII("javascript:url", "javascript", true)); |
810 EXPECT_FALSE(StartsWithASCII("JavaScript:url", "javascript", true)); | 810 EXPECT_FALSE(StartsWithASCII("JavaScript:url", "javascript", true)); |
811 EXPECT_TRUE(StartsWithASCII("javascript:url", "javascript", false)); | 811 EXPECT_TRUE(StartsWithASCII("javascript:url", "javascript", false)); |
812 EXPECT_TRUE(StartsWithASCII("JavaScript:url", "javascript", false)); | 812 EXPECT_TRUE(StartsWithASCII("JavaScript:url", "javascript", false)); |
813 EXPECT_FALSE(StartsWithASCII("java", "javascript", true)); | 813 EXPECT_FALSE(StartsWithASCII("java", "javascript", true)); |
814 EXPECT_FALSE(StartsWithASCII("java", "javascript", false)); | 814 EXPECT_FALSE(StartsWithASCII("java", "javascript", false)); |
815 EXPECT_FALSE(StartsWithASCII("", "javascript", false)); | 815 EXPECT_FALSE(StartsWithASCII(std::string(), "javascript", false)); |
816 EXPECT_FALSE(StartsWithASCII("", "javascript", true)); | 816 EXPECT_FALSE(StartsWithASCII(std::string(), "javascript", true)); |
817 EXPECT_TRUE(StartsWithASCII("java", "", false)); | 817 EXPECT_TRUE(StartsWithASCII("java", std::string(), false)); |
818 EXPECT_TRUE(StartsWithASCII("java", "", true)); | 818 EXPECT_TRUE(StartsWithASCII("java", std::string(), true)); |
819 | 819 |
820 EXPECT_TRUE(StartsWith(L"javascript:url", L"javascript", true)); | 820 EXPECT_TRUE(StartsWith(L"javascript:url", L"javascript", true)); |
821 EXPECT_FALSE(StartsWith(L"JavaScript:url", L"javascript", true)); | 821 EXPECT_FALSE(StartsWith(L"JavaScript:url", L"javascript", true)); |
822 EXPECT_TRUE(StartsWith(L"javascript:url", L"javascript", false)); | 822 EXPECT_TRUE(StartsWith(L"javascript:url", L"javascript", false)); |
823 EXPECT_TRUE(StartsWith(L"JavaScript:url", L"javascript", false)); | 823 EXPECT_TRUE(StartsWith(L"JavaScript:url", L"javascript", false)); |
824 EXPECT_FALSE(StartsWith(L"java", L"javascript", true)); | 824 EXPECT_FALSE(StartsWith(L"java", L"javascript", true)); |
825 EXPECT_FALSE(StartsWith(L"java", L"javascript", false)); | 825 EXPECT_FALSE(StartsWith(L"java", L"javascript", false)); |
826 EXPECT_FALSE(StartsWith(L"", L"javascript", false)); | 826 EXPECT_FALSE(StartsWith(std::wstring(), L"javascript", false)); |
827 EXPECT_FALSE(StartsWith(L"", L"javascript", true)); | 827 EXPECT_FALSE(StartsWith(std::wstring(), L"javascript", true)); |
828 EXPECT_TRUE(StartsWith(L"java", L"", false)); | 828 EXPECT_TRUE(StartsWith(L"java", std::wstring(), false)); |
829 EXPECT_TRUE(StartsWith(L"java", L"", true)); | 829 EXPECT_TRUE(StartsWith(L"java", std::wstring(), true)); |
830 } | 830 } |
831 | 831 |
832 TEST(StringUtilTest, EndsWith) { | 832 TEST(StringUtilTest, EndsWith) { |
833 EXPECT_TRUE(EndsWith(L"Foo.plugin", L".plugin", true)); | 833 EXPECT_TRUE(EndsWith(L"Foo.plugin", L".plugin", true)); |
834 EXPECT_FALSE(EndsWith(L"Foo.Plugin", L".plugin", true)); | 834 EXPECT_FALSE(EndsWith(L"Foo.Plugin", L".plugin", true)); |
835 EXPECT_TRUE(EndsWith(L"Foo.plugin", L".plugin", false)); | 835 EXPECT_TRUE(EndsWith(L"Foo.plugin", L".plugin", false)); |
836 EXPECT_TRUE(EndsWith(L"Foo.Plugin", L".plugin", false)); | 836 EXPECT_TRUE(EndsWith(L"Foo.Plugin", L".plugin", false)); |
837 EXPECT_FALSE(EndsWith(L".plug", L".plugin", true)); | 837 EXPECT_FALSE(EndsWith(L".plug", L".plugin", true)); |
838 EXPECT_FALSE(EndsWith(L".plug", L".plugin", false)); | 838 EXPECT_FALSE(EndsWith(L".plug", L".plugin", false)); |
839 EXPECT_FALSE(EndsWith(L"Foo.plugin Bar", L".plugin", true)); | 839 EXPECT_FALSE(EndsWith(L"Foo.plugin Bar", L".plugin", true)); |
840 EXPECT_FALSE(EndsWith(L"Foo.plugin Bar", L".plugin", false)); | 840 EXPECT_FALSE(EndsWith(L"Foo.plugin Bar", L".plugin", false)); |
841 EXPECT_FALSE(EndsWith(L"", L".plugin", false)); | 841 EXPECT_FALSE(EndsWith(std::wstring(), L".plugin", false)); |
842 EXPECT_FALSE(EndsWith(L"", L".plugin", true)); | 842 EXPECT_FALSE(EndsWith(std::wstring(), L".plugin", true)); |
843 EXPECT_TRUE(EndsWith(L"Foo.plugin", L"", false)); | 843 EXPECT_TRUE(EndsWith(L"Foo.plugin", std::wstring(), false)); |
844 EXPECT_TRUE(EndsWith(L"Foo.plugin", L"", true)); | 844 EXPECT_TRUE(EndsWith(L"Foo.plugin", std::wstring(), true)); |
845 EXPECT_TRUE(EndsWith(L".plugin", L".plugin", false)); | 845 EXPECT_TRUE(EndsWith(L".plugin", L".plugin", false)); |
846 EXPECT_TRUE(EndsWith(L".plugin", L".plugin", true)); | 846 EXPECT_TRUE(EndsWith(L".plugin", L".plugin", true)); |
847 EXPECT_TRUE(EndsWith(L"", L"", false)); | 847 EXPECT_TRUE(EndsWith(std::wstring(), std::wstring(), false)); |
848 EXPECT_TRUE(EndsWith(L"", L"", true)); | 848 EXPECT_TRUE(EndsWith(std::wstring(), std::wstring(), true)); |
849 } | 849 } |
850 | 850 |
851 TEST(StringUtilTest, GetStringFWithOffsets) { | 851 TEST(StringUtilTest, GetStringFWithOffsets) { |
852 std::vector<string16> subst; | 852 std::vector<string16> subst; |
853 subst.push_back(ASCIIToUTF16("1")); | 853 subst.push_back(ASCIIToUTF16("1")); |
854 subst.push_back(ASCIIToUTF16("2")); | 854 subst.push_back(ASCIIToUTF16("2")); |
855 std::vector<size_t> offsets; | 855 std::vector<size_t> offsets; |
856 | 856 |
857 ReplaceStringPlaceholders(ASCIIToUTF16("Hello, $1. Your number is $2."), | 857 ReplaceStringPlaceholders(ASCIIToUTF16("Hello, $1. Your number is $2."), |
858 subst, | 858 subst, |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1135 cases[i].replace_with, | 1135 cases[i].replace_with, |
1136 &output); | 1136 &output); |
1137 EXPECT_EQ(cases[i].result, result); | 1137 EXPECT_EQ(cases[i].result, result); |
1138 EXPECT_EQ(cases[i].output, output); | 1138 EXPECT_EQ(cases[i].output, output); |
1139 } | 1139 } |
1140 } | 1140 } |
1141 | 1141 |
1142 TEST(StringUtilTest, ContainsOnlyChars) { | 1142 TEST(StringUtilTest, ContainsOnlyChars) { |
1143 // Providing an empty list of characters should return false but for the empty | 1143 // Providing an empty list of characters should return false but for the empty |
1144 // string. | 1144 // string. |
1145 EXPECT_TRUE(ContainsOnlyChars("", "")); | 1145 EXPECT_TRUE(ContainsOnlyChars(std::string(), std::string())); |
1146 EXPECT_FALSE(ContainsOnlyChars("Hello", "")); | 1146 EXPECT_FALSE(ContainsOnlyChars("Hello", std::string())); |
1147 | 1147 |
1148 EXPECT_TRUE(ContainsOnlyChars("", "1234")); | 1148 EXPECT_TRUE(ContainsOnlyChars(std::string(), "1234")); |
1149 EXPECT_TRUE(ContainsOnlyChars("1", "1234")); | 1149 EXPECT_TRUE(ContainsOnlyChars("1", "1234")); |
1150 EXPECT_TRUE(ContainsOnlyChars("1", "4321")); | 1150 EXPECT_TRUE(ContainsOnlyChars("1", "4321")); |
1151 EXPECT_TRUE(ContainsOnlyChars("123", "4321")); | 1151 EXPECT_TRUE(ContainsOnlyChars("123", "4321")); |
1152 EXPECT_FALSE(ContainsOnlyChars("123a", "4321")); | 1152 EXPECT_FALSE(ContainsOnlyChars("123a", "4321")); |
1153 } | 1153 } |
1154 | 1154 |
1155 class WriteIntoTest : public testing::Test { | 1155 class WriteIntoTest : public testing::Test { |
1156 protected: | 1156 protected: |
1157 static void WritesCorrectly(size_t num_chars) { | 1157 static void WritesCorrectly(size_t num_chars) { |
1158 std::string buffer; | 1158 std::string buffer; |
(...skipping 22 matching lines...) Expand all Loading... |
1181 const std::string live = kLive; | 1181 const std::string live = kLive; |
1182 std::string dead = live; | 1182 std::string dead = live; |
1183 strncpy(WriteInto(&dead, 5), kDead, 4); | 1183 strncpy(WriteInto(&dead, 5), kDead, 4); |
1184 EXPECT_EQ(kDead, dead); | 1184 EXPECT_EQ(kDead, dead); |
1185 EXPECT_EQ(4u, dead.size()); | 1185 EXPECT_EQ(4u, dead.size()); |
1186 EXPECT_EQ(kLive, live); | 1186 EXPECT_EQ(kLive, live); |
1187 EXPECT_EQ(4u, live.size()); | 1187 EXPECT_EQ(4u, live.size()); |
1188 } | 1188 } |
1189 | 1189 |
1190 } // namespace base | 1190 } // namespace base |
OLD | NEW |