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

Side by Side Diff: base/string_util_unittest.cc

Issue 28281: Get rid of wstring variants of StringToFoo. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 10 months 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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 810 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 {"99999999999", INT_MAX, false}, 821 {"99999999999", INT_MAX, false},
822 }; 822 };
823 823
824 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { 824 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
825 EXPECT_EQ(cases[i].output, StringToInt(cases[i].input)); 825 EXPECT_EQ(cases[i].output, StringToInt(cases[i].input));
826 int output; 826 int output;
827 EXPECT_EQ(cases[i].success, StringToInt(cases[i].input, &output)); 827 EXPECT_EQ(cases[i].success, StringToInt(cases[i].input, &output));
828 EXPECT_EQ(cases[i].output, output); 828 EXPECT_EQ(cases[i].output, output);
829 829
830 std::wstring wide_input = ASCIIToWide(cases[i].input); 830 std::wstring wide_input = ASCIIToWide(cases[i].input);
831 EXPECT_EQ(cases[i].output, StringToInt(wide_input)); 831 EXPECT_EQ(cases[i].output, StringToInt(WideToUTF16Hack(wide_input)));
832 EXPECT_EQ(cases[i].success, StringToInt(wide_input, &output)); 832 EXPECT_EQ(cases[i].success, StringToInt(WideToUTF16Hack(wide_input),
833 &output));
833 EXPECT_EQ(cases[i].output, output); 834 EXPECT_EQ(cases[i].output, output);
834 } 835 }
835 836
836 // One additional test to verify that conversion of numbers in strings with 837 // One additional test to verify that conversion of numbers in strings with
837 // embedded NUL characters. The NUL and extra data after it should be 838 // embedded NUL characters. The NUL and extra data after it should be
838 // interpreted as junk after the number. 839 // interpreted as junk after the number.
839 const char input[] = "6\06"; 840 const char input[] = "6\06";
840 std::string input_string(input, arraysize(input) - 1); 841 std::string input_string(input, arraysize(input) - 1);
841 int output; 842 int output;
842 EXPECT_FALSE(StringToInt(input_string, &output)); 843 EXPECT_FALSE(StringToInt(input_string, &output));
843 EXPECT_EQ(6, output); 844 EXPECT_EQ(6, output);
844 845
845 std::wstring wide_input = ASCIIToWide(input_string); 846 std::wstring wide_input = ASCIIToWide(input_string);
846 EXPECT_FALSE(StringToInt(wide_input, &output)); 847 EXPECT_FALSE(StringToInt(WideToUTF16Hack(wide_input), &output));
847 EXPECT_EQ(6, output); 848 EXPECT_EQ(6, output);
848 } 849 }
849 850
850 TEST(StringUtilTest, StringToInt64) { 851 TEST(StringUtilTest, StringToInt64) {
851 static const struct { 852 static const struct {
852 std::string input; 853 std::string input;
853 int64 output; 854 int64 output;
854 bool success; 855 bool success;
855 } cases[] = { 856 } cases[] = {
856 {"0", 0, true}, 857 {"0", 0, true},
(...skipping 28 matching lines...) Expand all
885 {"99999999999999999999", kint64max, false}, 886 {"99999999999999999999", kint64max, false},
886 }; 887 };
887 888
888 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { 889 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
889 EXPECT_EQ(cases[i].output, StringToInt64(cases[i].input)); 890 EXPECT_EQ(cases[i].output, StringToInt64(cases[i].input));
890 int64 output; 891 int64 output;
891 EXPECT_EQ(cases[i].success, StringToInt64(cases[i].input, &output)); 892 EXPECT_EQ(cases[i].success, StringToInt64(cases[i].input, &output));
892 EXPECT_EQ(cases[i].output, output); 893 EXPECT_EQ(cases[i].output, output);
893 894
894 std::wstring wide_input = ASCIIToWide(cases[i].input); 895 std::wstring wide_input = ASCIIToWide(cases[i].input);
895 EXPECT_EQ(cases[i].output, StringToInt64(wide_input)); 896 EXPECT_EQ(cases[i].output, StringToInt64(WideToUTF16Hack(wide_input)));
896 EXPECT_EQ(cases[i].success, StringToInt64(wide_input, &output)); 897 EXPECT_EQ(cases[i].success, StringToInt64(WideToUTF16Hack(wide_input),
898 &output));
897 EXPECT_EQ(cases[i].output, output); 899 EXPECT_EQ(cases[i].output, output);
898 } 900 }
899 901
900 // One additional test to verify that conversion of numbers in strings with 902 // One additional test to verify that conversion of numbers in strings with
901 // embedded NUL characters. The NUL and extra data after it should be 903 // embedded NUL characters. The NUL and extra data after it should be
902 // interpreted as junk after the number. 904 // interpreted as junk after the number.
903 const char input[] = "6\06"; 905 const char input[] = "6\06";
904 std::string input_string(input, arraysize(input) - 1); 906 std::string input_string(input, arraysize(input) - 1);
905 int64 output; 907 int64 output;
906 EXPECT_FALSE(StringToInt64(input_string, &output)); 908 EXPECT_FALSE(StringToInt64(input_string, &output));
907 EXPECT_EQ(6, output); 909 EXPECT_EQ(6, output);
908 910
909 std::wstring wide_input = ASCIIToWide(input_string); 911 std::wstring wide_input = ASCIIToWide(input_string);
910 EXPECT_FALSE(StringToInt64(wide_input, &output)); 912 EXPECT_FALSE(StringToInt64(WideToUTF16Hack(wide_input), &output));
911 EXPECT_EQ(6, output); 913 EXPECT_EQ(6, output);
912 } 914 }
913 915
914 TEST(StringUtilTest, HexStringToInt) { 916 TEST(StringUtilTest, HexStringToInt) {
915 static const struct { 917 static const struct {
916 std::string input; 918 std::string input;
917 int output; 919 int output;
918 bool success; 920 bool success;
919 } cases[] = { 921 } cases[] = {
920 {"0", 0, true}, 922 {"0", 0, true},
(...skipping 25 matching lines...) Expand all
946 {"", 0, false}, 948 {"", 0, false},
947 }; 949 };
948 950
949 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { 951 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
950 EXPECT_EQ(cases[i].output, HexStringToInt(cases[i].input)); 952 EXPECT_EQ(cases[i].output, HexStringToInt(cases[i].input));
951 int output; 953 int output;
952 EXPECT_EQ(cases[i].success, HexStringToInt(cases[i].input, &output)); 954 EXPECT_EQ(cases[i].success, HexStringToInt(cases[i].input, &output));
953 EXPECT_EQ(cases[i].output, output); 955 EXPECT_EQ(cases[i].output, output);
954 956
955 std::wstring wide_input = ASCIIToWide(cases[i].input); 957 std::wstring wide_input = ASCIIToWide(cases[i].input);
956 EXPECT_EQ(cases[i].output, HexStringToInt(wide_input)); 958 EXPECT_EQ(cases[i].output, HexStringToInt(WideToUTF16Hack(wide_input)));
957 EXPECT_EQ(cases[i].success, HexStringToInt(wide_input, &output)); 959 EXPECT_EQ(cases[i].success, HexStringToInt(WideToUTF16Hack(wide_input),
960 &output));
958 EXPECT_EQ(cases[i].output, output); 961 EXPECT_EQ(cases[i].output, output);
959 } 962 }
960 // One additional test to verify that conversion of numbers in strings with 963 // One additional test to verify that conversion of numbers in strings with
961 // embedded NUL characters. The NUL and extra data after it should be 964 // embedded NUL characters. The NUL and extra data after it should be
962 // interpreted as junk after the number. 965 // interpreted as junk after the number.
963 const char input[] = "0xc0ffee\09"; 966 const char input[] = "0xc0ffee\09";
964 std::string input_string(input, arraysize(input) - 1); 967 std::string input_string(input, arraysize(input) - 1);
965 int output; 968 int output;
966 EXPECT_FALSE(HexStringToInt(input_string, &output)); 969 EXPECT_FALSE(HexStringToInt(input_string, &output));
967 EXPECT_EQ(0xc0ffee, output); 970 EXPECT_EQ(0xc0ffee, output);
968 971
969 std::wstring wide_input = ASCIIToWide(input_string); 972 std::wstring wide_input = ASCIIToWide(input_string);
970 EXPECT_FALSE(HexStringToInt(wide_input, &output)); 973 EXPECT_FALSE(HexStringToInt(WideToUTF16Hack(wide_input), &output));
971 EXPECT_EQ(0xc0ffee, output); 974 EXPECT_EQ(0xc0ffee, output);
972 } 975 }
973 976
974 TEST(StringUtilTest, HexStringToBytes) { 977 TEST(StringUtilTest, HexStringToBytes) {
975 static const struct { 978 static const struct {
976 const std::string input; 979 const std::string input;
977 const char* output; 980 const char* output;
978 size_t output_len; 981 size_t output_len;
979 bool success; 982 bool success;
980 } cases[] = { 983 } cases[] = {
(...skipping 25 matching lines...) Expand all
1006 for (size_t j = 0; j < cases[i].output_len; ++j) 1009 for (size_t j = 0; j < cases[i].output_len; ++j)
1007 compare.push_back(static_cast<uint8>(cases[i].output[j])); 1010 compare.push_back(static_cast<uint8>(cases[i].output[j]));
1008 ASSERT_EQ(output.size(), compare.size()) << i << ": " << cases[i].input; 1011 ASSERT_EQ(output.size(), compare.size()) << i << ": " << cases[i].input;
1009 EXPECT_TRUE(std::equal(output.begin(), output.end(), compare.begin())) << 1012 EXPECT_TRUE(std::equal(output.begin(), output.end(), compare.begin())) <<
1010 i << ": " << cases[i].input; 1013 i << ": " << cases[i].input;
1011 1014
1012 output.clear(); 1015 output.clear();
1013 compare.clear(); 1016 compare.clear();
1014 1017
1015 std::wstring wide_input = ASCIIToWide(cases[i].input); 1018 std::wstring wide_input = ASCIIToWide(cases[i].input);
1016 EXPECT_EQ(cases[i].success, HexStringToBytes(wide_input, &output)) << 1019 EXPECT_EQ(cases[i].success,
1020 HexStringToBytes(WideToUTF16Hack(wide_input), &output)) <<
1017 i << ": " << cases[i].input; 1021 i << ": " << cases[i].input;
1018 for (size_t j = 0; j < cases[i].output_len; ++j) 1022 for (size_t j = 0; j < cases[i].output_len; ++j)
1019 compare.push_back(static_cast<uint8>(cases[i].output[j])); 1023 compare.push_back(static_cast<uint8>(cases[i].output[j]));
1020 ASSERT_EQ(output.size(), compare.size()) << i << ": " << cases[i].input; 1024 ASSERT_EQ(output.size(), compare.size()) << i << ": " << cases[i].input;
1021 EXPECT_TRUE(std::equal(output.begin(), output.end(), compare.begin())) << 1025 EXPECT_TRUE(std::equal(output.begin(), output.end(), compare.begin())) <<
1022 i << ": " << cases[i].input; 1026 i << ": " << cases[i].input;
1023 } 1027 }
1024 } 1028 }
1025 1029
1026 TEST(StringUtilTest, StringToDouble) { 1030 TEST(StringUtilTest, StringToDouble) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1058 {"", 0.0, false}, 1062 {"", 0.0, false},
1059 }; 1063 };
1060 1064
1061 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { 1065 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
1062 EXPECT_DOUBLE_EQ(cases[i].output, StringToDouble(cases[i].input)); 1066 EXPECT_DOUBLE_EQ(cases[i].output, StringToDouble(cases[i].input));
1063 double output; 1067 double output;
1064 EXPECT_EQ(cases[i].success, StringToDouble(cases[i].input, &output)); 1068 EXPECT_EQ(cases[i].success, StringToDouble(cases[i].input, &output));
1065 EXPECT_DOUBLE_EQ(cases[i].output, output); 1069 EXPECT_DOUBLE_EQ(cases[i].output, output);
1066 1070
1067 std::wstring wide_input = ASCIIToWide(cases[i].input); 1071 std::wstring wide_input = ASCIIToWide(cases[i].input);
1068 EXPECT_DOUBLE_EQ(cases[i].output, StringToDouble(wide_input)); 1072 EXPECT_DOUBLE_EQ(cases[i].output,
1069 EXPECT_EQ(cases[i].success, StringToDouble(wide_input, &output)); 1073 StringToDouble(WideToUTF16Hack(wide_input)));
1074 EXPECT_EQ(cases[i].success, StringToDouble(WideToUTF16Hack(wide_input),
1075 &output));
1070 EXPECT_DOUBLE_EQ(cases[i].output, output); 1076 EXPECT_DOUBLE_EQ(cases[i].output, output);
1071 } 1077 }
1072 1078
1073 // One additional test to verify that conversion of numbers in strings with 1079 // One additional test to verify that conversion of numbers in strings with
1074 // embedded NUL characters. The NUL and extra data after it should be 1080 // embedded NUL characters. The NUL and extra data after it should be
1075 // interpreted as junk after the number. 1081 // interpreted as junk after the number.
1076 const char input[] = "3.14\0159"; 1082 const char input[] = "3.14\0159";
1077 std::string input_string(input, arraysize(input) - 1); 1083 std::string input_string(input, arraysize(input) - 1);
1078 double output; 1084 double output;
1079 EXPECT_FALSE(StringToDouble(input_string, &output)); 1085 EXPECT_FALSE(StringToDouble(input_string, &output));
1080 EXPECT_DOUBLE_EQ(3.14, output); 1086 EXPECT_DOUBLE_EQ(3.14, output);
1081 1087
1082 std::wstring wide_input = ASCIIToWide(input_string); 1088 std::wstring wide_input = ASCIIToWide(input_string);
1083 EXPECT_FALSE(StringToDouble(wide_input, &output)); 1089 EXPECT_FALSE(StringToDouble(WideToUTF16Hack(wide_input), &output));
1084 EXPECT_DOUBLE_EQ(3.14, output); 1090 EXPECT_DOUBLE_EQ(3.14, output);
1085 } 1091 }
1086 1092
1087 // This checks where we can use the assignment operator for a va_list. We need 1093 // This checks where we can use the assignment operator for a va_list. We need
1088 // a way to do this since Visual C doesn't support va_copy, but assignment on 1094 // a way to do this since Visual C doesn't support va_copy, but assignment on
1089 // va_list is not guaranteed to be a copy. See StringAppendVT which uses this 1095 // va_list is not guaranteed to be a copy. See StringAppendVT which uses this
1090 // capability. 1096 // capability.
1091 static void VariableArgsFunc(const char* format, ...) { 1097 static void VariableArgsFunc(const char* format, ...) {
1092 va_list org; 1098 va_list org;
1093 va_start(org, format); 1099 va_start(org, format);
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
1548 } 1554 }
1549 } 1555 }
1550 1556
1551 TEST(StringUtilTest, HexEncode) { 1557 TEST(StringUtilTest, HexEncode) {
1552 std::string hex(HexEncode(NULL, 0)); 1558 std::string hex(HexEncode(NULL, 0));
1553 EXPECT_EQ(hex.length(), 0U); 1559 EXPECT_EQ(hex.length(), 0U);
1554 unsigned char bytes[] = {0x01, 0xff, 0x02, 0xfe, 0x03, 0x80, 0x81}; 1560 unsigned char bytes[] = {0x01, 0xff, 0x02, 0xfe, 0x03, 0x80, 0x81};
1555 hex = HexEncode(bytes, sizeof(bytes)); 1561 hex = HexEncode(bytes, sizeof(bytes));
1556 EXPECT_EQ(hex.compare("01FF02FE038081"), 0); 1562 EXPECT_EQ(hex.compare("01FF02FE038081"), 0);
1557 } 1563 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698