OLD | NEW |
1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 {"0x10", true, 16}, | 46 {"0x10", true, 16}, |
47 {"-0x10", true, -16}, | 47 {"-0x10", true, -16}, |
48 {"+0x20", true, 32}, | 48 {"+0x20", true, 32}, |
49 {"0xf", true, 15}, | 49 {"0xf", true, 15}, |
50 {"0xg", false, 0}, | 50 {"0xg", false, 0}, |
51 {"0x7fffffff", true, std::numeric_limits<int>::max()}, | 51 {"0x7fffffff", true, std::numeric_limits<int>::max()}, |
52 {"0x7FfFfFfF", true, std::numeric_limits<int>::max()}, | 52 {"0x7FfFfFfF", true, std::numeric_limits<int>::max()}, |
53 {"0x80000000", false, 0}, | 53 {"0x80000000", false, 0}, |
54 {"0xFFFFFFFF", false, 0}, | 54 {"0xFFFFFFFF", false, 0}, |
55 {"-0x7fffffff", true, -2147483647}, | 55 {"-0x7fffffff", true, -2147483647}, |
56 {"-0x80000000", true, -2147483648}, | 56 {"-0x80000000", true, std::numeric_limits<int>::min()}, |
57 {"-0x80000001", false, 0}, | 57 {"-0x80000001", false, 0}, |
58 {"-0xffffffff", false, 0}, | 58 {"-0xffffffff", false, 0}, |
59 {"0x100000000", false, 0}, | 59 {"0x100000000", false, 0}, |
60 {"0xabcdef", true, 11259375}, | 60 {"0xabcdef", true, 11259375}, |
61 {"010", true, 8}, | 61 {"010", true, 8}, |
62 {"-010", true, -8}, | 62 {"-010", true, -8}, |
63 {"+020", true, 16}, | 63 {"+020", true, 16}, |
64 {"07", true, 7}, | 64 {"07", true, 7}, |
65 {"08", false, 0}, | 65 {"08", false, 0}, |
66 {" 0", false, 0}, | 66 {" 0", false, 0}, |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 if (valid) { | 101 if (valid) { |
102 EXPECT_EQ(kTestData[index].value, value) | 102 EXPECT_EQ(kTestData[index].value, value) |
103 << "index " << index << ", string " << kTestData[index].string; | 103 << "index " << index << ", string " << kTestData[index].string; |
104 } | 104 } |
105 } else { | 105 } else { |
106 EXPECT_FALSE(valid) << "index " << index << ", string " | 106 EXPECT_FALSE(valid) << "index " << index << ", string " |
107 << kTestData[index].string << ", value " << value; | 107 << kTestData[index].string << ", value " << value; |
108 } | 108 } |
109 } | 109 } |
110 | 110 |
111 // Ensure that embedded NUL characters are treated as bad input. | 111 // Ensure that embedded NUL characters are treated as bad input. The string |
112 const char input[] = "6\0006"; | 112 // is split to avoid MSVC warning: |
| 113 // "decimal digit terminates octal escape sequence". |
| 114 const char input[] = "6\000" "6"; |
113 base::StringPiece input_string(input, arraysize(input) - 1); | 115 base::StringPiece input_string(input, arraysize(input) - 1); |
114 int output; | 116 int output; |
115 EXPECT_FALSE(StringToNumber(input_string, &output)); | 117 EXPECT_FALSE(StringToNumber(input_string, &output)); |
116 | 118 |
117 // Ensure that a NUL is not required at the end of the string. | 119 // Ensure that a NUL is not required at the end of the string. |
118 EXPECT_TRUE(StringToNumber(base::StringPiece("66", 1), &output)); | 120 EXPECT_TRUE(StringToNumber(base::StringPiece("66", 1), &output)); |
119 EXPECT_EQ(6, output); | 121 EXPECT_EQ(6, output); |
120 } | 122 } |
121 | 123 |
122 TEST(StringNumberConversion, StringToUnsignedInt) { | 124 TEST(StringNumberConversion, StringToUnsignedInt) { |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 if (valid) { | 199 if (valid) { |
198 EXPECT_EQ(kTestData[index].value, value) | 200 EXPECT_EQ(kTestData[index].value, value) |
199 << "index " << index << ", string " << kTestData[index].string; | 201 << "index " << index << ", string " << kTestData[index].string; |
200 } | 202 } |
201 } else { | 203 } else { |
202 EXPECT_FALSE(valid) << "index " << index << ", string " | 204 EXPECT_FALSE(valid) << "index " << index << ", string " |
203 << kTestData[index].string << ", value " << value; | 205 << kTestData[index].string << ", value " << value; |
204 } | 206 } |
205 } | 207 } |
206 | 208 |
207 // Ensure that embedded NUL characters are treated as bad input. | 209 // Ensure that embedded NUL characters are treated as bad input. The string |
208 const char input[] = "6\0006"; | 210 // is split to avoid MSVC warning: |
| 211 // "decimal digit terminates octal escape sequence". |
| 212 const char input[] = "6\000" "6"; |
209 base::StringPiece input_string(input, arraysize(input) - 1); | 213 base::StringPiece input_string(input, arraysize(input) - 1); |
210 unsigned int output; | 214 unsigned int output; |
211 EXPECT_FALSE(StringToNumber(input_string, &output)); | 215 EXPECT_FALSE(StringToNumber(input_string, &output)); |
212 | 216 |
213 // Ensure that a NUL is not required at the end of the string. | 217 // Ensure that a NUL is not required at the end of the string. |
214 EXPECT_TRUE(StringToNumber(base::StringPiece("66", 1), &output)); | 218 EXPECT_TRUE(StringToNumber(base::StringPiece("66", 1), &output)); |
215 EXPECT_EQ(6u, output); | 219 EXPECT_EQ(6u, output); |
216 } | 220 } |
217 | 221 |
218 } // namespace | 222 } // namespace |
219 } // namespace test | 223 } // namespace test |
220 } // namespace crashpad | 224 } // namespace crashpad |
OLD | NEW |