From 2a62132bf0ec0b39def1a334f4e361e515a75b65 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 16 Oct 2014 21:54:42 +0200 Subject: [PATCH] Added JsonParser_String_Tests.cpp --- include/ArduinoJson/JsonBuffer.h | 5 ++-- src/JsonBuffer.cpp | 6 +++++ test/JsonParser_String_Tests.cpp | 46 ++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 test/JsonParser_String_Tests.cpp diff --git a/include/ArduinoJson/JsonBuffer.h b/include/ArduinoJson/JsonBuffer.h index 4dfcfe13..74ab72e5 100644 --- a/include/ArduinoJson/JsonBuffer.h +++ b/include/ArduinoJson/JsonBuffer.h @@ -26,7 +26,9 @@ public: JsonValue createValue(); - JsonArray parseArray(char* string); + JsonArray parseArray(char* json); + + JsonValue parseValue(char* json); protected: virtual void* allocateNode() = 0; @@ -41,4 +43,3 @@ private: JsonNode* createObjectNode(); JsonNode* createStringNode(const char* value); }; - diff --git a/src/JsonBuffer.cpp b/src/JsonBuffer.cpp index 068066b8..ec2ea3ee 100644 --- a/src/JsonBuffer.cpp +++ b/src/JsonBuffer.cpp @@ -25,6 +25,12 @@ JsonArray JsonBuffer::parseArray(char* json) return JsonArray(parser.parseAnything()); } +JsonValue JsonBuffer::parseValue(char* json) +{ + JsonParser parser(this, json); + return JsonValue(parser.parseAnything()); +} + JsonNode* JsonBuffer::createArrayNode() { JsonNode* node = createNode(); diff --git a/test/JsonParser_String_Tests.cpp b/test/JsonParser_String_Tests.cpp new file mode 100644 index 00000000..834a4525 --- /dev/null +++ b/test/JsonParser_String_Tests.cpp @@ -0,0 +1,46 @@ +#include +#include +#include + +class JsonParser_String_Tests : public testing::Test +{ +protected: + void whenInputIs(const char* json) + { + strcpy(_jsonString, json); + _result = _jsonBuffer.parseValue(_jsonString); + } + + void outputMustBe(const char* expected) + { + EXPECT_STREQ(expected, _result); + } + + char _jsonString[256]; + StaticJsonBuffer<42> _jsonBuffer; + const char* _result; +}; + +TEST_F(JsonParser_String_Tests, SimpleString) +{ + whenInputIs("\"hello world\""); + outputMustBe("hello world"); +} + +TEST_F(JsonParser_String_Tests, CurlyBraces) +{ + whenInputIs("\"{hello:world}\""); + outputMustBe("{hello:world}"); +} + +TEST_F(JsonParser_String_Tests, SquareBraquets) +{ + whenInputIs("\"[hello,world]\""); + outputMustBe("[hello,world]"); +} + +TEST_F(JsonParser_String_Tests, EscapedQuote) +{ + whenInputIs("\"hello \\\"world\\\"\""); + outputMustBe("hello \"world\""); +} \ No newline at end of file