| 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 |