Fixed parser that incorrectly rejected floats containing a + (issue #349)

This commit is contained in:
Benoit Blanchon
2016-09-19 10:08:14 +02:00
parent 8a9b918bf4
commit deb57b960b
6 changed files with 41 additions and 33 deletions

View File

@ -24,13 +24,29 @@ class JsonParser_Variant_Test : public testing::Test {
EXPECT_STREQ(expected, _result.as<char*>());
}
void resultMustEqual(double expected) {
EXPECT_DOUBLE_EQ(expected, _result.as<double>());
}
template <typename T>
void resultTypeMustBe() {
EXPECT_TRUE(_result.is<T>());
}
void resultMustBeInvalid() { EXPECT_FALSE(_result.success()); }
void resultMustBeValid() { EXPECT_TRUE(_result.success()); }
void resultMustBeInvalid() {
EXPECT_FALSE(_result.success());
}
void resultMustBeValid() {
EXPECT_TRUE(_result.success());
}
template <typename T>
void verify(const char* input, T expected) {
whenInputIs(input);
resultMustBeValid();
resultTypeMustBe<T>();
resultMustEqual(expected);
}
private:
DynamicJsonBuffer _jsonBuffer;
@ -51,38 +67,29 @@ TEST_F(JsonParser_Variant_Test, EmptyArray) {
}
TEST_F(JsonParser_Variant_Test, Integer) {
whenInputIs("42");
resultMustBeValid();
resultTypeMustBe<int>();
resultMustEqual(42);
verify("42", 42);
verify("-42", -42);
}
TEST_F(JsonParser_Variant_Test, Double) {
whenInputIs("3.14");
resultMustBeValid();
resultTypeMustBe<double>();
resultMustEqual(3.14);
verify("3.14", 3.14);
verify("3.14", 3.14);
verify("1E+10", 1E+10);
verify("-1E+10", -1E+10);
verify("1.234E+10", 1.234E+10);
verify("1.79769e+308", 1.79769e+308);
verify("-1.79769e+308", -1.79769e+308);
verify("1.7976931348623157e+308", 1.7976931348623157e+308);
verify("0.017976931348623157e+310", 0.017976931348623157e+310);
}
TEST_F(JsonParser_Variant_Test, String) {
whenInputIs("\"hello world\"");
resultMustBeValid();
resultTypeMustBe<char*>();
resultMustEqual("hello world");
verify("\"hello world\"", "hello world");
}
TEST_F(JsonParser_Variant_Test, True) {
whenInputIs("true");
resultMustBeValid();
resultTypeMustBe<bool>();
resultMustEqual(true);
}
TEST_F(JsonParser_Variant_Test, False) {
whenInputIs("false");
resultMustBeValid();
resultTypeMustBe<bool>();
resultMustEqual(false);
verify("true", true);
verify("false", false);
}
TEST_F(JsonParser_Variant_Test, Invalid) {