Added JsonVariant::success() (issue #279)

This commit is contained in:
Benoit Blanchon
2016-05-18 09:15:49 +02:00
parent eab13dc565
commit a3a2ca4796
3 changed files with 22 additions and 0 deletions

View File

@ -1,6 +1,11 @@
ArduinoJson: change log ArduinoJson: change log
======================= =======================
HEAD
----
* Added `JsonVariant::success()` (issue #279)
v5.4.0 v5.4.0
------ ------

View File

@ -256,6 +256,8 @@ class JsonVariant : public JsonVariantBase<JsonVariant> {
return isObject(); return isObject();
} }
bool success() const { return _type != Internals::JSON_UNDEFINED; }
// Serialize the variant to a JsonWriter // Serialize the variant to a JsonWriter
void writeTo(Internals::JsonWriter &writer) const; void writeTo(Internals::JsonWriter &writer) const;

View File

@ -29,6 +29,9 @@ class JsonParser_Variant_Test : public testing::Test {
EXPECT_TRUE(_result.is<T>()); EXPECT_TRUE(_result.is<T>());
} }
void resultMustBeInvalid() { EXPECT_FALSE(_result.success()); }
void resultMustBeValid() { EXPECT_TRUE(_result.success()); }
private: private:
DynamicJsonBuffer _jsonBuffer; DynamicJsonBuffer _jsonBuffer;
JsonVariant _result; JsonVariant _result;
@ -37,40 +40,52 @@ class JsonParser_Variant_Test : public testing::Test {
TEST_F(JsonParser_Variant_Test, EmptyObject) { TEST_F(JsonParser_Variant_Test, EmptyObject) {
whenInputIs("{}"); whenInputIs("{}");
resultMustBeValid();
resultTypeMustBe<JsonObject>(); resultTypeMustBe<JsonObject>();
} }
TEST_F(JsonParser_Variant_Test, EmptyArray) { TEST_F(JsonParser_Variant_Test, EmptyArray) {
whenInputIs("[]"); whenInputIs("[]");
resultMustBeValid();
resultTypeMustBe<JsonArray>(); resultTypeMustBe<JsonArray>();
} }
TEST_F(JsonParser_Variant_Test, Integer) { TEST_F(JsonParser_Variant_Test, Integer) {
whenInputIs("42"); whenInputIs("42");
resultMustBeValid();
resultTypeMustBe<int>(); resultTypeMustBe<int>();
resultMustEqual(42); resultMustEqual(42);
} }
TEST_F(JsonParser_Variant_Test, Double) { TEST_F(JsonParser_Variant_Test, Double) {
whenInputIs("3.14"); whenInputIs("3.14");
resultMustBeValid();
resultTypeMustBe<double>(); resultTypeMustBe<double>();
resultMustEqual(3.14); resultMustEqual(3.14);
} }
TEST_F(JsonParser_Variant_Test, String) { TEST_F(JsonParser_Variant_Test, String) {
whenInputIs("\"hello world\""); whenInputIs("\"hello world\"");
resultMustBeValid();
resultTypeMustBe<char*>(); resultTypeMustBe<char*>();
resultMustEqual("hello world"); resultMustEqual("hello world");
} }
TEST_F(JsonParser_Variant_Test, True) { TEST_F(JsonParser_Variant_Test, True) {
whenInputIs("true"); whenInputIs("true");
resultMustBeValid();
resultTypeMustBe<bool>(); resultTypeMustBe<bool>();
resultMustEqual(true); resultMustEqual(true);
} }
TEST_F(JsonParser_Variant_Test, False) { TEST_F(JsonParser_Variant_Test, False) {
whenInputIs("false"); whenInputIs("false");
resultMustBeValid();
resultTypeMustBe<bool>(); resultTypeMustBe<bool>();
resultMustEqual(false); resultMustEqual(false);
} }
TEST_F(JsonParser_Variant_Test, Invalid) {
whenInputIs("{");
resultMustBeInvalid();
}