OLD | NEW |
| (Empty) |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "wtf/text/StringToNumber.h" | |
6 | |
7 #include "testing/gtest/include/gtest/gtest.h" | |
8 #include <cstring> | |
9 | |
10 namespace WTF { | |
11 | |
12 TEST(StringToNumberTest, TestCharactersToIntStrict) { | |
13 #define EXPECT_VALID(string, expectedValue, base) \ | |
14 do { \ | |
15 bool ok; \ | |
16 int value = charactersToIntStrict(reinterpret_cast<const LChar*>(string), \ | |
17 std::strlen(string), &ok, base); \ | |
18 EXPECT_TRUE(ok); \ | |
19 EXPECT_EQ(value, expectedValue); \ | |
20 } while (false) | |
21 | |
22 #define EXPECT_INVALID(string, base) \ | |
23 do { \ | |
24 bool ok; \ | |
25 charactersToIntStrict(reinterpret_cast<const LChar*>(string), \ | |
26 std::strlen(string), &ok, base); \ | |
27 EXPECT_FALSE(ok); \ | |
28 } while (false) | |
29 | |
30 #define EXPECT_VALID_DECIMAL(string, expectedValue) \ | |
31 EXPECT_VALID(string, expectedValue, 10) | |
32 #define EXPECT_INVALID_DECIMAL(string) EXPECT_INVALID(string, 10) | |
33 #define EXPECT_VALID_HEXADECIMAL(string, expectedValue) \ | |
34 EXPECT_VALID(string, expectedValue, 16) | |
35 #define EXPECT_INVALID_HEXADECIMAL(string) EXPECT_INVALID(string, 16) | |
36 | |
37 EXPECT_VALID_DECIMAL("1", 1); | |
38 EXPECT_VALID_DECIMAL("2", 2); | |
39 EXPECT_VALID_DECIMAL("9", 9); | |
40 EXPECT_VALID_DECIMAL("10", 10); | |
41 EXPECT_VALID_DECIMAL("0", 0); | |
42 EXPECT_VALID_DECIMAL("-0", 0); | |
43 EXPECT_VALID_DECIMAL("-1", -1); | |
44 EXPECT_VALID_DECIMAL("-2", -2); | |
45 EXPECT_VALID_DECIMAL("-9", -9); | |
46 EXPECT_VALID_DECIMAL("-10", -10); | |
47 EXPECT_VALID_DECIMAL("+0", 0); | |
48 EXPECT_VALID_DECIMAL("+1", 1); | |
49 EXPECT_VALID_DECIMAL("+2", 2); | |
50 EXPECT_VALID_DECIMAL("+9", 9); | |
51 EXPECT_VALID_DECIMAL("+10", 10); | |
52 EXPECT_VALID_DECIMAL("00", 0); | |
53 EXPECT_VALID_DECIMAL("+00", 0); | |
54 EXPECT_VALID_DECIMAL("-00", 0); | |
55 EXPECT_VALID_DECIMAL("01", 1); | |
56 EXPECT_VALID_DECIMAL("-01", -1); | |
57 EXPECT_VALID_DECIMAL("00000000000000000000", 0); | |
58 EXPECT_INVALID_DECIMAL("a"); | |
59 EXPECT_INVALID_DECIMAL("1a"); | |
60 EXPECT_INVALID_DECIMAL("a1"); | |
61 EXPECT_INVALID_DECIMAL("-a"); | |
62 EXPECT_INVALID_DECIMAL(""); | |
63 EXPECT_INVALID_DECIMAL("-"); | |
64 EXPECT_INVALID_DECIMAL("--1"); | |
65 EXPECT_INVALID_DECIMAL("++1"); | |
66 EXPECT_INVALID_DECIMAL("+-1"); | |
67 EXPECT_INVALID_DECIMAL("-+1"); | |
68 EXPECT_INVALID_DECIMAL("0-"); | |
69 EXPECT_INVALID_DECIMAL("0+"); | |
70 | |
71 EXPECT_VALID_DECIMAL("2147483647", 2147483647); | |
72 EXPECT_VALID_DECIMAL("02147483647", 2147483647); | |
73 EXPECT_INVALID_DECIMAL("2147483648"); | |
74 EXPECT_INVALID_DECIMAL("2147483649"); | |
75 EXPECT_INVALID_DECIMAL("2147483650"); | |
76 EXPECT_INVALID_DECIMAL("2147483700"); | |
77 EXPECT_INVALID_DECIMAL("2147484000"); | |
78 EXPECT_INVALID_DECIMAL("2200000000"); | |
79 EXPECT_INVALID_DECIMAL("3000000000"); | |
80 EXPECT_INVALID_DECIMAL("10000000000"); | |
81 EXPECT_VALID_DECIMAL("-2147483647", -2147483647); | |
82 EXPECT_VALID_DECIMAL("-2147483648", -2147483647 - 1); | |
83 EXPECT_INVALID_DECIMAL("-2147483649"); | |
84 EXPECT_INVALID_DECIMAL("-2147483650"); | |
85 EXPECT_INVALID_DECIMAL("-2147483700"); | |
86 EXPECT_INVALID_DECIMAL("-2147484000"); | |
87 EXPECT_INVALID_DECIMAL("-2200000000"); | |
88 EXPECT_INVALID_DECIMAL("-3000000000"); | |
89 EXPECT_INVALID_DECIMAL("-10000000000"); | |
90 | |
91 EXPECT_VALID_HEXADECIMAL("1", 1); | |
92 EXPECT_VALID_HEXADECIMAL("a", 0xA); | |
93 EXPECT_VALID_HEXADECIMAL("A", 0xA); | |
94 EXPECT_VALID_HEXADECIMAL("+a", 0xA); | |
95 EXPECT_VALID_HEXADECIMAL("+A", 0xA); | |
96 EXPECT_VALID_HEXADECIMAL("-a", -0xA); | |
97 EXPECT_VALID_HEXADECIMAL("-A", -0xA); | |
98 | |
99 EXPECT_VALID_HEXADECIMAL("7fffffff", 0x7FFFFFFF); | |
100 EXPECT_INVALID_HEXADECIMAL("80000000"); | |
101 EXPECT_INVALID_HEXADECIMAL("8000000a"); | |
102 EXPECT_INVALID_HEXADECIMAL("8000000f"); | |
103 EXPECT_INVALID_HEXADECIMAL("90000000"); | |
104 EXPECT_INVALID_HEXADECIMAL("fffffff0"); | |
105 EXPECT_INVALID_HEXADECIMAL("ffffffff"); | |
106 EXPECT_INVALID_HEXADECIMAL("100000000"); | |
107 EXPECT_INVALID_HEXADECIMAL("7fffffff0"); | |
108 EXPECT_VALID_HEXADECIMAL("-7fffffff", -0x7FFFFFFF); | |
109 EXPECT_VALID_HEXADECIMAL("-80000000", -0x7FFFFFFF - 1); | |
110 EXPECT_INVALID_HEXADECIMAL("-80000001"); | |
111 EXPECT_INVALID_HEXADECIMAL("-8000000a"); | |
112 EXPECT_INVALID_HEXADECIMAL("-8000000f"); | |
113 EXPECT_INVALID_HEXADECIMAL("-80000010"); | |
114 EXPECT_INVALID_HEXADECIMAL("-90000000"); | |
115 EXPECT_INVALID_HEXADECIMAL("-f0000000"); | |
116 EXPECT_INVALID_HEXADECIMAL("-fffffff0"); | |
117 EXPECT_INVALID_HEXADECIMAL("-ffffffff"); | |
118 | |
119 #undef EXPECT_VALID_DECIMAL | |
120 #undef EXPECT_INVALID_DECIMAL | |
121 #undef EXPECT_VALID_HEXADECIMAL | |
122 #undef EXPECT_INVALID_HEXADECIMAL | |
123 #undef EXPECT_VALID | |
124 #undef EXPECT_INVALID | |
125 } | |
126 } | |
OLD | NEW |