OLD | NEW |
---|---|
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
820 EXPECT_STREQ(s1, s2); | 820 EXPECT_STREQ(s1, s2); |
821 EXPECT_EQ(d1, d2); | 821 EXPECT_EQ(d1, d2); |
822 | 822 |
823 va_end(dup); | 823 va_end(dup); |
824 } | 824 } |
825 | 825 |
826 TEST(StringUtilTest, VAList) { | 826 TEST(StringUtilTest, VAList) { |
827 VariableArgsFunc("%d %d %s %lf", 45, 92, "This is interesting", 9.21); | 827 VariableArgsFunc("%d %d %s %lf", 45, 92, "This is interesting", 9.21); |
828 } | 828 } |
829 | 829 |
830 TEST(StringUtilTest, StringPrintfEmptyFormat) { | 830 TEST(StringUtilTest, StringPrintfEmpty) { |
831 const char* empty = ""; | |
832 EXPECT_EQ("", StringPrintf(empty)); | |
833 EXPECT_EQ("", StringPrintf("%s", "")); | 831 EXPECT_EQ("", StringPrintf("%s", "")); |
834 } | 832 } |
835 | 833 |
836 TEST(StringUtilTest, StringPrintfMisc) { | 834 TEST(StringUtilTest, StringPrintfMisc) { |
837 EXPECT_EQ("123hello w", StringPrintf("%3d%2s %1c", 123, "hello", 'w')); | 835 EXPECT_EQ("123hello w", StringPrintf("%3d%2s %1c", 123, "hello", 'w')); |
838 EXPECT_EQ(L"123hello w", StringPrintf(L"%3d%2ls %1lc", 123, L"hello", 'w')); | 836 EXPECT_EQ(L"123hello w", StringPrintf(L"%3d%2ls %1lc", 123, L"hello", 'w')); |
839 } | 837 } |
840 | 838 |
841 TEST(StringUtilTest, StringAppendfStringEmptyParam) { | |
842 std::string value("Hello"); | |
843 StringAppendF(&value, ""); | |
844 EXPECT_EQ("Hello", value); | |
845 | |
846 std::wstring valuew(L"Hello"); | |
847 StringAppendF(&valuew, L""); | |
848 EXPECT_EQ(L"Hello", valuew); | |
849 } | |
850 | |
851 TEST(StringUtilTest, StringAppendfEmptyString) { | 839 TEST(StringUtilTest, StringAppendfEmptyString) { |
852 std::string value("Hello"); | 840 std::string value("Hello"); |
853 StringAppendF(&value, "%s", ""); | 841 StringAppendF(&value, "%s", ""); |
854 EXPECT_EQ("Hello", value); | 842 EXPECT_EQ("Hello", value); |
855 | 843 |
856 std::wstring valuew(L"Hello"); | 844 std::wstring valuew(L"Hello"); |
857 StringAppendF(&valuew, L"%ls", L""); | 845 StringAppendF(&valuew, L"%ls", L""); |
858 EXPECT_EQ(L"Hello", valuew); | 846 EXPECT_EQ(L"Hello", valuew); |
859 } | 847 } |
860 | 848 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
919 #if defined(OS_WIN) | 907 #if defined(OS_WIN) |
920 sprintf_s(ref, 320000, fmt, src, src, src, src, src, src, src); | 908 sprintf_s(ref, 320000, fmt, src, src, src, src, src, src, src); |
921 #elif defined(OS_POSIX) | 909 #elif defined(OS_POSIX) |
922 snprintf(ref, 320000, fmt, src, src, src, src, src, src, src); | 910 snprintf(ref, 320000, fmt, src, src, src, src, src, src, src); |
923 #endif | 911 #endif |
924 | 912 |
925 EXPECT_STREQ(ref, out.c_str()); | 913 EXPECT_STREQ(ref, out.c_str()); |
926 delete[] ref; | 914 delete[] ref; |
927 } | 915 } |
928 | 916 |
917 // A helper for the StringAppendV test that follows. | |
918 // Just forwards its args to StringAppendV. | |
919 static void StringAppendVTestHelper(std::string* out, | |
Mark Mentovai
2009/11/18 20:55:27
Maybe mark this as PRINTF_FORMAT too.
| |
920 const char* format, | |
921 ...) { | |
922 va_list ap; | |
923 va_start(ap, format); | |
924 StringAppendV(out, format, ap); | |
925 va_end(ap); | |
926 } | |
927 | |
928 TEST(StringUtilTest, StringAppendV) { | |
929 std::string out; | |
930 StringAppendVTestHelper(&out, "%d foo %s", 1, "bar"); | |
931 EXPECT_EQ("1 foo bar", out); | |
932 } | |
933 | |
929 // Test the boundary condition for the size of the string_util's | 934 // Test the boundary condition for the size of the string_util's |
930 // internal buffer. | 935 // internal buffer. |
931 TEST(StringUtilTest, GrowBoundary) { | 936 TEST(StringUtilTest, GrowBoundary) { |
932 const int string_util_buf_len = 1024; | 937 const int string_util_buf_len = 1024; |
933 // Our buffer should be one larger than the size of StringAppendVT's stack | 938 // Our buffer should be one larger than the size of StringAppendVT's stack |
934 // buffer. | 939 // buffer. |
935 const int buf_len = string_util_buf_len + 1; | 940 const int buf_len = string_util_buf_len + 1; |
936 char src[buf_len + 1]; // Need extra one for NULL-terminator. | 941 char src[buf_len + 1]; // Need extra one for NULL-terminator. |
937 for (int i = 0; i < buf_len; ++i) | 942 for (int i = 0; i < buf_len; ++i) |
938 src[i] = 'a'; | 943 src[i] = 'a'; |
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1342 | 1347 |
1343 TEST(StringUtilTest, HexEncode) { | 1348 TEST(StringUtilTest, HexEncode) { |
1344 std::string hex(HexEncode(NULL, 0)); | 1349 std::string hex(HexEncode(NULL, 0)); |
1345 EXPECT_EQ(hex.length(), 0U); | 1350 EXPECT_EQ(hex.length(), 0U); |
1346 unsigned char bytes[] = {0x01, 0xff, 0x02, 0xfe, 0x03, 0x80, 0x81}; | 1351 unsigned char bytes[] = {0x01, 0xff, 0x02, 0xfe, 0x03, 0x80, 0x81}; |
1347 hex = HexEncode(bytes, sizeof(bytes)); | 1352 hex = HexEncode(bytes, sizeof(bytes)); |
1348 EXPECT_EQ(hex.compare("01FF02FE038081"), 0); | 1353 EXPECT_EQ(hex.compare("01FF02FE038081"), 0); |
1349 } | 1354 } |
1350 | 1355 |
1351 } // namaspace base | 1356 } // namaspace base |
OLD | NEW |