Added JsonVariant JsonBuffer::parse() (issue #265)

This commit is contained in:
Benoit Blanchon
2016-04-30 09:47:53 +02:00
parent a138791964
commit a8032f81d9
8 changed files with 121 additions and 4 deletions

View File

@ -0,0 +1,76 @@
// Copyright Benoit Blanchon 2014-2016
// MIT License
//
// Arduino JSON library
// https://github.com/bblanchon/ArduinoJson
// If you like this project, please add a star!
#include <gtest/gtest.h>
#include <ArduinoJson.h>
class JsonParser_Variant_Test : public testing::Test {
protected:
void whenInputIs(const char* jsonString) {
strcpy(_jsonString, jsonString);
_result = _jsonBuffer.parse(_jsonString);
}
template <typename T>
void resultMustEqual(T expected) {
EXPECT_EQ(expected, _result.as<T>());
}
void resultMustEqual(const char* expected) {
EXPECT_STREQ(expected, _result.as<char*>());
}
template <typename T>
void resultTypeMustBe() {
EXPECT_TRUE(_result.is<T>());
}
private:
DynamicJsonBuffer _jsonBuffer;
JsonVariant _result;
char _jsonString[256];
};
TEST_F(JsonParser_Variant_Test, EmptyObject) {
whenInputIs("{}");
resultTypeMustBe<JsonObject>();
}
TEST_F(JsonParser_Variant_Test, EmptyArray) {
whenInputIs("[]");
resultTypeMustBe<JsonArray>();
}
TEST_F(JsonParser_Variant_Test, Integer) {
whenInputIs("42");
resultTypeMustBe<int>();
resultMustEqual(42);
}
TEST_F(JsonParser_Variant_Test, Double) {
whenInputIs("3.14");
resultTypeMustBe<double>();
resultMustEqual(3.14);
}
TEST_F(JsonParser_Variant_Test, String) {
whenInputIs("\"hello world\"");
resultTypeMustBe<char*>();
resultMustEqual("hello world");
}
TEST_F(JsonParser_Variant_Test, True) {
whenInputIs("true");
resultTypeMustBe<bool>();
resultMustEqual(true);
}
TEST_F(JsonParser_Variant_Test, False) {
whenInputIs("false");
resultTypeMustBe<bool>();
resultMustEqual(false);
}

View File

@ -32,6 +32,11 @@ TEST(JsonVariant_As_Tests, DoubleAsLong) {
ASSERT_EQ(4L, variant.as<long>());
}
TEST(JsonVariant_As_Tests, DoubleAsUnsigned) {
JsonVariant variant = 4.2;
ASSERT_EQ(4U, variant.as<unsigned>());
}
TEST(JsonVariant_As_Tests, DoubleZeroAsBool) {
JsonVariant variant = 0.0;
ASSERT_FALSE(variant.as<bool>());
@ -92,11 +97,16 @@ TEST(JsonVariant_As_Tests, LongZeroAsBool) {
ASSERT_FALSE(variant.as<bool>());
}
TEST(JsonVariant_As_Tests, LongAsDouble) {
TEST(JsonVariant_As_Tests, PositiveLongAsDouble) {
JsonVariant variant = 42L;
ASSERT_EQ(42.0, variant.as<double>());
}
TEST(JsonVariant_As_Tests, NegativeLongAsDouble) {
JsonVariant variant = -42L;
ASSERT_EQ(-42.0, variant.as<double>());
}
TEST(JsonVariant_As_Tests, LongAsString) {
JsonVariant variant = 42L;
ASSERT_EQ(String("42"), variant.as<String>());

View File

@ -93,9 +93,9 @@ TEST_F(JsonVariant_PrintTo_Tests, Integer) {
outputMustBe("42");
}
TEST_F(JsonVariant_PrintTo_Tests, Long) {
variant = 42L;
outputMustBe("42");
TEST_F(JsonVariant_PrintTo_Tests, NegativeLong) {
variant = -42;
outputMustBe("-42");
}
TEST_F(JsonVariant_PrintTo_Tests, UnsignedLong) {

View File

@ -17,6 +17,10 @@ TEST_F(JsonVariant_Undefined_Tests, AsLongReturns0) {
EXPECT_EQ(0, variant.as<long>());
}
TEST_F(JsonVariant_Undefined_Tests, AsUnsignedReturns0) {
EXPECT_EQ(0, variant.as<unsigned>());
}
TEST_F(JsonVariant_Undefined_Tests, AsStringReturnsNull) {
EXPECT_EQ(0, variant.asString());
}