forked from bblanchon/ArduinoJson
Added JsonVariant JsonBuffer::parse()
(issue #265)
This commit is contained in:
76
test/JsonParser_Variant_Tests.cpp
Normal file
76
test/JsonParser_Variant_Tests.cpp
Normal 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);
|
||||
}
|
@ -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>());
|
||||
|
@ -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) {
|
||||
|
@ -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());
|
||||
}
|
||||
|
Reference in New Issue
Block a user