OLD | NEW |
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 "base/json/json_parser.h" | 5 #include "base/json/json_parser.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 TestLastThree(parser.get()); | 98 TestLastThree(parser.get()); |
99 | 99 |
100 ASSERT_TRUE(value.get()); | 100 ASSERT_TRUE(value.get()); |
101 bool bool_value = false; | 101 bool bool_value = false; |
102 EXPECT_TRUE(value->GetAsBoolean(&bool_value)); | 102 EXPECT_TRUE(value->GetAsBoolean(&bool_value)); |
103 EXPECT_TRUE(bool_value); | 103 EXPECT_TRUE(bool_value); |
104 | 104 |
105 // Literal |false|. | 105 // Literal |false|. |
106 input = "false,|"; | 106 input = "false,|"; |
107 parser.reset(NewTestParser(input)); | 107 parser.reset(NewTestParser(input)); |
108 value.reset(parser->ConsumeLiteral()); | 108 value = parser->ConsumeLiteral(); |
109 EXPECT_EQ('e', *parser->pos_); | 109 EXPECT_EQ('e', *parser->pos_); |
110 | 110 |
111 TestLastThree(parser.get()); | 111 TestLastThree(parser.get()); |
112 | 112 |
113 ASSERT_TRUE(value.get()); | 113 ASSERT_TRUE(value.get()); |
114 EXPECT_TRUE(value->GetAsBoolean(&bool_value)); | 114 EXPECT_TRUE(value->GetAsBoolean(&bool_value)); |
115 EXPECT_FALSE(bool_value); | 115 EXPECT_FALSE(bool_value); |
116 | 116 |
117 // Literal |null|. | 117 // Literal |null|. |
118 input = "null,|"; | 118 input = "null,|"; |
119 parser.reset(NewTestParser(input)); | 119 parser.reset(NewTestParser(input)); |
120 value.reset(parser->ConsumeLiteral()); | 120 value = parser->ConsumeLiteral(); |
121 EXPECT_EQ('l', *parser->pos_); | 121 EXPECT_EQ('l', *parser->pos_); |
122 | 122 |
123 TestLastThree(parser.get()); | 123 TestLastThree(parser.get()); |
124 | 124 |
125 ASSERT_TRUE(value.get()); | 125 ASSERT_TRUE(value.get()); |
126 EXPECT_TRUE(value->IsType(Value::TYPE_NULL)); | 126 EXPECT_TRUE(value->IsType(Value::TYPE_NULL)); |
127 } | 127 } |
128 | 128 |
129 TEST_F(JSONParserTest, ConsumeNumbers) { | 129 TEST_F(JSONParserTest, ConsumeNumbers) { |
130 // Integer. | 130 // Integer. |
131 std::string input("1234,|"); | 131 std::string input("1234,|"); |
132 std::unique_ptr<JSONParser> parser(NewTestParser(input)); | 132 std::unique_ptr<JSONParser> parser(NewTestParser(input)); |
133 std::unique_ptr<Value> value(parser->ConsumeNumber()); | 133 std::unique_ptr<Value> value(parser->ConsumeNumber()); |
134 EXPECT_EQ('4', *parser->pos_); | 134 EXPECT_EQ('4', *parser->pos_); |
135 | 135 |
136 TestLastThree(parser.get()); | 136 TestLastThree(parser.get()); |
137 | 137 |
138 ASSERT_TRUE(value.get()); | 138 ASSERT_TRUE(value.get()); |
139 int number_i; | 139 int number_i; |
140 EXPECT_TRUE(value->GetAsInteger(&number_i)); | 140 EXPECT_TRUE(value->GetAsInteger(&number_i)); |
141 EXPECT_EQ(1234, number_i); | 141 EXPECT_EQ(1234, number_i); |
142 | 142 |
143 // Negative integer. | 143 // Negative integer. |
144 input = "-1234,|"; | 144 input = "-1234,|"; |
145 parser.reset(NewTestParser(input)); | 145 parser.reset(NewTestParser(input)); |
146 value.reset(parser->ConsumeNumber()); | 146 value = parser->ConsumeNumber(); |
147 EXPECT_EQ('4', *parser->pos_); | 147 EXPECT_EQ('4', *parser->pos_); |
148 | 148 |
149 TestLastThree(parser.get()); | 149 TestLastThree(parser.get()); |
150 | 150 |
151 ASSERT_TRUE(value.get()); | 151 ASSERT_TRUE(value.get()); |
152 EXPECT_TRUE(value->GetAsInteger(&number_i)); | 152 EXPECT_TRUE(value->GetAsInteger(&number_i)); |
153 EXPECT_EQ(-1234, number_i); | 153 EXPECT_EQ(-1234, number_i); |
154 | 154 |
155 // Double. | 155 // Double. |
156 input = "12.34,|"; | 156 input = "12.34,|"; |
157 parser.reset(NewTestParser(input)); | 157 parser.reset(NewTestParser(input)); |
158 value.reset(parser->ConsumeNumber()); | 158 value = parser->ConsumeNumber(); |
159 EXPECT_EQ('4', *parser->pos_); | 159 EXPECT_EQ('4', *parser->pos_); |
160 | 160 |
161 TestLastThree(parser.get()); | 161 TestLastThree(parser.get()); |
162 | 162 |
163 ASSERT_TRUE(value.get()); | 163 ASSERT_TRUE(value.get()); |
164 double number_d; | 164 double number_d; |
165 EXPECT_TRUE(value->GetAsDouble(&number_d)); | 165 EXPECT_TRUE(value->GetAsDouble(&number_d)); |
166 EXPECT_EQ(12.34, number_d); | 166 EXPECT_EQ(12.34, number_d); |
167 | 167 |
168 // Scientific. | 168 // Scientific. |
169 input = "42e3,|"; | 169 input = "42e3,|"; |
170 parser.reset(NewTestParser(input)); | 170 parser.reset(NewTestParser(input)); |
171 value.reset(parser->ConsumeNumber()); | 171 value = parser->ConsumeNumber(); |
172 EXPECT_EQ('3', *parser->pos_); | 172 EXPECT_EQ('3', *parser->pos_); |
173 | 173 |
174 TestLastThree(parser.get()); | 174 TestLastThree(parser.get()); |
175 | 175 |
176 ASSERT_TRUE(value.get()); | 176 ASSERT_TRUE(value.get()); |
177 EXPECT_TRUE(value->GetAsDouble(&number_d)); | 177 EXPECT_TRUE(value->GetAsDouble(&number_d)); |
178 EXPECT_EQ(42000, number_d); | 178 EXPECT_EQ(42000, number_d); |
179 | 179 |
180 // Negative scientific. | 180 // Negative scientific. |
181 input = "314159e-5,|"; | 181 input = "314159e-5,|"; |
182 parser.reset(NewTestParser(input)); | 182 parser.reset(NewTestParser(input)); |
183 value.reset(parser->ConsumeNumber()); | 183 value = parser->ConsumeNumber(); |
184 EXPECT_EQ('5', *parser->pos_); | 184 EXPECT_EQ('5', *parser->pos_); |
185 | 185 |
186 TestLastThree(parser.get()); | 186 TestLastThree(parser.get()); |
187 | 187 |
188 ASSERT_TRUE(value.get()); | 188 ASSERT_TRUE(value.get()); |
189 EXPECT_TRUE(value->GetAsDouble(&number_d)); | 189 EXPECT_TRUE(value->GetAsDouble(&number_d)); |
190 EXPECT_EQ(3.14159, number_d); | 190 EXPECT_EQ(3.14159, number_d); |
191 | 191 |
192 // Positive scientific. | 192 // Positive scientific. |
193 input = "0.42e+3,|"; | 193 input = "0.42e+3,|"; |
194 parser.reset(NewTestParser(input)); | 194 parser.reset(NewTestParser(input)); |
195 value.reset(parser->ConsumeNumber()); | 195 value = parser->ConsumeNumber(); |
196 EXPECT_EQ('3', *parser->pos_); | 196 EXPECT_EQ('3', *parser->pos_); |
197 | 197 |
198 TestLastThree(parser.get()); | 198 TestLastThree(parser.get()); |
199 | 199 |
200 ASSERT_TRUE(value.get()); | 200 ASSERT_TRUE(value.get()); |
201 EXPECT_TRUE(value->GetAsDouble(&number_d)); | 201 EXPECT_TRUE(value->GetAsDouble(&number_d)); |
202 EXPECT_EQ(420, number_d); | 202 EXPECT_EQ(420, number_d); |
203 } | 203 } |
204 | 204 |
205 TEST_F(JSONParserTest, ErrorMessages) { | 205 TEST_F(JSONParserTest, ErrorMessages) { |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 TEST_F(JSONParserTest, DecodeUnicodeNonCharacter) { | 318 TEST_F(JSONParserTest, DecodeUnicodeNonCharacter) { |
319 // Tests Unicode code points (encoded as escaped UTF-16) that are not valid | 319 // Tests Unicode code points (encoded as escaped UTF-16) that are not valid |
320 // characters. | 320 // characters. |
321 EXPECT_FALSE(JSONReader::Read("[\"\\ufdd0\"]")); | 321 EXPECT_FALSE(JSONReader::Read("[\"\\ufdd0\"]")); |
322 EXPECT_FALSE(JSONReader::Read("[\"\\ufffe\"]")); | 322 EXPECT_FALSE(JSONReader::Read("[\"\\ufffe\"]")); |
323 EXPECT_FALSE(JSONReader::Read("[\"\\ud83f\\udffe\"]")); | 323 EXPECT_FALSE(JSONReader::Read("[\"\\ud83f\\udffe\"]")); |
324 } | 324 } |
325 | 325 |
326 } // namespace internal | 326 } // namespace internal |
327 } // namespace base | 327 } // namespace base |
OLD | NEW |