diff --git a/tests/EscapedStringTests.cpp b/tests/EscapedStringTests.cpp new file mode 100644 index 00000000..fb662574 --- /dev/null +++ b/tests/EscapedStringTests.cpp @@ -0,0 +1,87 @@ +#include + +#include "EscapedString.h" +#include "StringBuilder.h" + +using namespace ArduinoJson::Internals; + +class EscapedStringTests : public testing::Test +{ +protected: + void whenInputIs(const char* input) + { + StringBuilder sb(buffer, sizeof(buffer)); + returnValue = EscapedString::printTo(input, sb); + } + + void outputMustBe(const char* expected) + { + EXPECT_STREQ(expected, buffer); + EXPECT_EQ(strlen(expected), returnValue); + } + +private: + char buffer[1024]; + size_t returnValue; + +}; + +TEST_F(EscapedStringTests, Null) +{ + whenInputIs(0); + outputMustBe("null"); +} + +TEST_F(EscapedStringTests, EmptyString) +{ + whenInputIs(""); + outputMustBe("\"\""); +} + +TEST_F(EscapedStringTests, QuotationMark) +{ + whenInputIs("\""); + outputMustBe("\"\\\"\""); +} + +TEST_F(EscapedStringTests, ReverseSolidus) +{ + whenInputIs("\\"); + outputMustBe("\"\\\\\""); +} + +TEST_F(EscapedStringTests, Solidus) +{ + whenInputIs("/"); + outputMustBe("\"/\""); // but the JSON format allows \/ +} + +TEST_F(EscapedStringTests, Backspace) +{ + whenInputIs("\b"); + outputMustBe("\"\\b\""); +} + +TEST_F(EscapedStringTests, Formfeed) +{ + whenInputIs("\f"); + outputMustBe("\"\\f\""); +} + +TEST_F(EscapedStringTests, Newline) +{ + whenInputIs("\n"); + outputMustBe("\"\\n\""); +} + +TEST_F(EscapedStringTests, CarriageReturn) +{ + whenInputIs("\r"); + outputMustBe("\"\\r\""); +} + +TEST_F(EscapedStringTests, HorizontalTab) +{ + whenInputIs("\t"); + outputMustBe("\"\\t\""); +} \ No newline at end of file diff --git a/tests/tests.vcxproj b/tests/tests.vcxproj index ff24a906..01ae50a5 100644 --- a/tests/tests.vcxproj +++ b/tests/tests.vcxproj @@ -85,6 +85,7 @@ + diff --git a/tests/tests.vcxproj.filters b/tests/tests.vcxproj.filters index d64a95af..37fa031f 100644 --- a/tests/tests.vcxproj.filters +++ b/tests/tests.vcxproj.filters @@ -36,5 +36,8 @@ Source Files + + Source Files + \ No newline at end of file