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

Side by Side Diff: base/strings/stringprintf_unittest.cc

Issue 632103004: Cleanup: Better constify some strings in base. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix bad refactoring Created 6 years, 2 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
« no previous file with comments | « base/strings/string_util_unittest.cc ('k') | base/sys_info_chromeos.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/strings/stringprintf.h" 5 #include "base/strings/stringprintf.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 } 99 }
100 } 100 }
101 101
102 // Test very large sprintfs that will cause the buffer to grow. 102 // Test very large sprintfs that will cause the buffer to grow.
103 TEST(StringPrintfTest, Grow) { 103 TEST(StringPrintfTest, Grow) {
104 char src[1026]; 104 char src[1026];
105 for (size_t i = 0; i < arraysize(src); i++) 105 for (size_t i = 0; i < arraysize(src); i++)
106 src[i] = 'A'; 106 src[i] = 'A';
107 src[1025] = 0; 107 src[1025] = 0;
108 108
109 const char* fmt = "%sB%sB%sB%sB%sB%sB%s"; 109 const char fmt[] = "%sB%sB%sB%sB%sB%sB%s";
110 110
111 std::string out; 111 std::string out;
112 SStringPrintf(&out, fmt, src, src, src, src, src, src, src); 112 SStringPrintf(&out, fmt, src, src, src, src, src, src, src);
113 113
114 const int kRefSize = 320000; 114 const int kRefSize = 320000;
115 char* ref = new char[kRefSize]; 115 char* ref = new char[kRefSize];
116 #if defined(OS_WIN) 116 #if defined(OS_WIN)
117 sprintf_s(ref, kRefSize, fmt, src, src, src, src, src, src, src); 117 sprintf_s(ref, kRefSize, fmt, src, src, src, src, src, src, src);
118 #elif defined(OS_POSIX) 118 #elif defined(OS_POSIX)
119 snprintf(ref, kRefSize, fmt, src, src, src, src, src, src, src); 119 snprintf(ref, kRefSize, fmt, src, src, src, src, src, src, src);
120 #endif 120 #endif
121 121
122 EXPECT_STREQ(ref, out.c_str()); 122 EXPECT_STREQ(ref, out.c_str());
123 delete[] ref; 123 delete[] ref;
124 } 124 }
125 125
126 TEST(StringPrintfTest, StringAppendV) { 126 TEST(StringPrintfTest, StringAppendV) {
127 std::string out; 127 std::string out;
128 StringAppendVTestHelper(&out, "%d foo %s", 1, "bar"); 128 StringAppendVTestHelper(&out, "%d foo %s", 1, "bar");
129 EXPECT_EQ("1 foo bar", out); 129 EXPECT_EQ("1 foo bar", out);
130 } 130 }
131 131
132 // Test the boundary condition for the size of the string_util's 132 // Test the boundary condition for the size of the string_util's
133 // internal buffer. 133 // internal buffer.
134 TEST(StringPrintfTest, GrowBoundary) { 134 TEST(StringPrintfTest, GrowBoundary) {
135 const int string_util_buf_len = 1024; 135 const int kStringUtilBufLen = 1024;
136 // Our buffer should be one larger than the size of StringAppendVT's stack 136 // Our buffer should be one larger than the size of StringAppendVT's stack
137 // buffer. 137 // buffer.
138 const int buf_len = string_util_buf_len + 1; 138 // And need extra one for NULL-terminator.
139 char src[buf_len + 1]; // Need extra one for NULL-terminator. 139 const int kBufLen = kStringUtilBufLen + 1 + 1;
140 for (int i = 0; i < buf_len; ++i) 140 char src[kBufLen];
141 for (int i = 0; i < kBufLen - 1; ++i)
141 src[i] = 'a'; 142 src[i] = 'a';
142 src[buf_len] = 0; 143 src[kBufLen - 1] = 0;
143 144
144 std::string out; 145 std::string out;
145 SStringPrintf(&out, "%s", src); 146 SStringPrintf(&out, "%s", src);
146 147
147 EXPECT_STREQ(src, out.c_str()); 148 EXPECT_STREQ(src, out.c_str());
148 } 149 }
149 150
150 // TODO(evanm): what's the proper cross-platform test here? 151 // TODO(evanm): what's the proper cross-platform test here?
151 #if defined(OS_WIN) 152 #if defined(OS_WIN)
152 // sprintf in Visual Studio fails when given U+FFFF. This tests that the 153 // sprintf in Visual Studio fails when given U+FFFF. This tests that the
(...skipping 26 matching lines...) Expand all
179 TEST(StringPrintfTest, StringPrintfErrno) { 180 TEST(StringPrintfTest, StringPrintfErrno) {
180 errno = 1; 181 errno = 1;
181 EXPECT_EQ("", StringPrintf("%s", "")); 182 EXPECT_EQ("", StringPrintf("%s", ""));
182 EXPECT_EQ(1, errno); 183 EXPECT_EQ(1, errno);
183 std::string out; 184 std::string out;
184 StringAppendVTestHelper(&out, "%d foo %s", 1, "bar"); 185 StringAppendVTestHelper(&out, "%d foo %s", 1, "bar");
185 EXPECT_EQ(1, errno); 186 EXPECT_EQ(1, errno);
186 } 187 }
187 188
188 } // namespace base 189 } // namespace base
OLDNEW
« no previous file with comments | « base/strings/string_util_unittest.cc ('k') | base/sys_info_chromeos.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698