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

Side by Side Diff: base/string_number_conversions_unittest.cc

Issue 10699040: Relaunch Chrome in metro-mode with the help of a helper process. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 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) 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 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace base { 13 namespace base {
14 14
15 namespace { 15 namespace {
16 16
17 template <typename INT> 17 template <typename INT>
18 struct IntToStringTest { 18 struct IntToStringTest {
19 INT num; 19 INT num;
20 const char* sexpected; 20 const char* sexpected;
21 const char* uexpected; 21 const char* uexpected;
22 }; 22 };
23 23
24 } // namespace 24 } // namespace
25 25
26 TEST(StringNumberConversionsTest, IntToString) { 26 TEST(StringNumberConversionsTest, IntToString) {
27 static const IntToStringTest<int> int_tests[] = { 27 static const IntToStringTest<int> int_tests[] = {
28 { 0, "0", "0" }, 28 { 0, "0", "0" },
29 { -1, "-1", "4294967295" }, 29 { -1, "-1", "4294967295" },
30 { std::numeric_limits<int>::max(), "2147483647", "2147483647" }, 30 { std::numeric_limits<int>::max(), "2147483647", "2147483647" },
31 { std::numeric_limits<int>::min(), "-2147483648", "2147483648" }, 31 { std::numeric_limits<int>::min(), "-2147483648", "2147483648" },
32 }; 32 };
33 static const IntToStringTest<int64> int64_tests[] = { 33 static const IntToStringTest<int64> int64_tests[] = {
34 { 0, "0", "0" }, 34 { 0, "0", "0" },
35 { -1, "-1", "18446744073709551615" }, 35 { -1, "-1", "18446744073709551615" },
36 { std::numeric_limits<int64>::max(), 36 { std::numeric_limits<int64>::max(),
37 "9223372036854775807", 37 "9223372036854775807",
38 "9223372036854775807", }, 38 "9223372036854775807", },
39 { std::numeric_limits<int64>::min(), 39 { std::numeric_limits<int64>::min(),
40 "-9223372036854775808", 40 "-9223372036854775808",
41 "9223372036854775808" }, 41 "9223372036854775808" },
42 }; 42 };
43 43
44 for (size_t i = 0; i < arraysize(int_tests); ++i) { 44 for (size_t i = 0; i < arraysize(int_tests); ++i) {
45 const IntToStringTest<int>* test = &int_tests[i]; 45 const IntToStringTest<int>* test = &int_tests[i];
46 EXPECT_EQ(IntToString(test->num), test->sexpected); 46 EXPECT_EQ(IntToString(test->num), test->sexpected);
47 EXPECT_EQ(IntToString16(test->num), UTF8ToUTF16(test->sexpected)); 47 EXPECT_EQ(IntToString16(test->num), UTF8ToUTF16(test->sexpected));
48 EXPECT_EQ(UintToString(test->num), test->uexpected); 48 EXPECT_EQ(UintToString(test->num), test->uexpected);
49 EXPECT_EQ(UintToString16(test->num), UTF8ToUTF16(test->uexpected)); 49 EXPECT_EQ(UintToString16(test->num), UTF8ToUTF16(test->uexpected));
50 } 50 }
51 for (size_t i = 0; i < arraysize(int64_tests); ++i) { 51 for (size_t i = 0; i < arraysize(int64_tests); ++i) {
(...skipping 13 matching lines...) Expand all
65 {0, "0"}, 65 {0, "0"},
66 {42, "42"}, 66 {42, "42"},
67 {INT_MAX, "2147483647"}, 67 {INT_MAX, "2147483647"},
68 {kuint64max, "18446744073709551615"}, 68 {kuint64max, "18446744073709551615"},
69 }; 69 };
70 70
71 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) 71 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i)
72 EXPECT_EQ(cases[i].output, Uint64ToString(cases[i].input)); 72 EXPECT_EQ(cases[i].output, Uint64ToString(cases[i].input));
73 } 73 }
74 74
75 TEST(StringNumberConversionsTest, PointerToString) {
76 static const struct {
77 void* input;
78 const char* output;
79 } cases[] = {
80 {0, "0"},
81 {reinterpret_cast<void*>(42), "42"},
82 {reinterpret_cast<void*>(UINT_MAX), "4294967295"},
83 };
84
85 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i)
86 EXPECT_EQ(std::string(cases[i].output), PointerToString(cases[i].input));
87
88 if (sizeof(void*) == sizeof(uint64)) {
89 EXPECT_EQ(std::string("18446744073709551615"),
90 PointerToString(reinterpret_cast<void*>(ULLONG_MAX)));
91 }
92 }
93
75 TEST(StringNumberConversionsTest, StringToInt) { 94 TEST(StringNumberConversionsTest, StringToInt) {
76 static const struct { 95 static const struct {
77 std::string input; 96 std::string input;
78 int output; 97 int output;
79 bool success; 98 bool success;
80 } cases[] = { 99 } cases[] = {
81 {"0", 0, true}, 100 {"0", 0, true},
82 {"42", 42, true}, 101 {"42", 42, true},
83 {"42\x99", 42, false}, 102 {"42\x99", 42, false},
84 {"\x99" "42\x99", 0, false}, 103 {"\x99" "42\x99", 0, false},
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 int64 output; 212 int64 output;
194 EXPECT_FALSE(StringToInt64(input_string, &output)); 213 EXPECT_FALSE(StringToInt64(input_string, &output));
195 EXPECT_EQ(6, output); 214 EXPECT_EQ(6, output);
196 215
197 string16 utf16_input = UTF8ToUTF16(input_string); 216 string16 utf16_input = UTF8ToUTF16(input_string);
198 output = 0; 217 output = 0;
199 EXPECT_FALSE(StringToInt64(utf16_input, &output)); 218 EXPECT_FALSE(StringToInt64(utf16_input, &output));
200 EXPECT_EQ(6, output); 219 EXPECT_EQ(6, output);
201 } 220 }
202 221
222 TEST(StringNumberConversionsTest, StringToPointer) {
223 static const struct {
224 const char* input;
225 void* output;
226 } cases[] = {
227 {"0", 0},
228 {"42", reinterpret_cast<void*>(42)},
229 {"4294967295", reinterpret_cast<void*>(UINT_MAX)},
230 };
231
232 void* value;
233 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
234 EXPECT_TRUE(StringToPointer(cases[i].input, &value));
235 EXPECT_EQ(cases[i].output, value);
236 }
237
238 if (sizeof(void*) == sizeof(uint64)) {
239 EXPECT_TRUE(StringToPointer(std::string("18446744073709551615"), &value));
240 EXPECT_EQ(reinterpret_cast<void*>(ULLONG_MAX), value);
241 }
242 }
243
203 TEST(StringNumberConversionsTest, HexStringToInt) { 244 TEST(StringNumberConversionsTest, HexStringToInt) {
204 static const struct { 245 static const struct {
205 std::string input; 246 std::string input;
206 int output; 247 int output;
207 bool success; 248 bool success;
208 } cases[] = { 249 } cases[] = {
209 {"0", 0, true}, 250 {"0", 0, true},
210 {"42", 66, true}, 251 {"42", 66, true},
211 {"-42", -66, true}, 252 {"-42", -66, true},
212 {"+42", 66, true}, 253 {"+42", 66, true},
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 417
377 TEST(StringNumberConversionsTest, HexEncode) { 418 TEST(StringNumberConversionsTest, HexEncode) {
378 std::string hex(HexEncode(NULL, 0)); 419 std::string hex(HexEncode(NULL, 0));
379 EXPECT_EQ(hex.length(), 0U); 420 EXPECT_EQ(hex.length(), 0U);
380 unsigned char bytes[] = {0x01, 0xff, 0x02, 0xfe, 0x03, 0x80, 0x81}; 421 unsigned char bytes[] = {0x01, 0xff, 0x02, 0xfe, 0x03, 0x80, 0x81};
381 hex = HexEncode(bytes, sizeof(bytes)); 422 hex = HexEncode(bytes, sizeof(bytes));
382 EXPECT_EQ(hex.compare("01FF02FE038081"), 0); 423 EXPECT_EQ(hex.compare("01FF02FE038081"), 0);
383 } 424 }
384 425
385 } // namespace base 426 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698