| 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 |