JsonWriter_WriteString_Tests.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright Benoit Blanchon 2014-2015
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. #include <gtest/gtest.h>
  7. #include <ArduinoJson/Internals/JsonWriter.hpp>
  8. #include <ArduinoJson/Internals/StringBuilder.hpp>
  9. using namespace ArduinoJson::Internals;
  10. class JsonWriter_WriteString_Tests : public testing::Test {
  11. protected:
  12. void whenInputIs(const char *input) {
  13. StringBuilder sb(buffer, sizeof(buffer));
  14. JsonWriter writer(sb);
  15. writer.writeString(input);
  16. returnValue = writer.bytesWritten();
  17. }
  18. void outputMustBe(const char *expected) {
  19. EXPECT_STREQ(expected, buffer);
  20. EXPECT_EQ(strlen(expected), returnValue);
  21. }
  22. private:
  23. char buffer[1024];
  24. size_t returnValue;
  25. };
  26. TEST_F(JsonWriter_WriteString_Tests, Null) {
  27. whenInputIs(0);
  28. outputMustBe("null");
  29. }
  30. TEST_F(JsonWriter_WriteString_Tests, EmptyString) {
  31. whenInputIs("");
  32. outputMustBe("\"\"");
  33. }
  34. TEST_F(JsonWriter_WriteString_Tests, QuotationMark) {
  35. whenInputIs("\"");
  36. outputMustBe("\"\\\"\"");
  37. }
  38. TEST_F(JsonWriter_WriteString_Tests, ReverseSolidus) {
  39. whenInputIs("\\");
  40. outputMustBe("\"\\\\\"");
  41. }
  42. TEST_F(JsonWriter_WriteString_Tests, Solidus) {
  43. whenInputIs("/");
  44. outputMustBe("\"/\""); // but the JSON format allows \/
  45. }
  46. TEST_F(JsonWriter_WriteString_Tests, Backspace) {
  47. whenInputIs("\b");
  48. outputMustBe("\"\\b\"");
  49. }
  50. TEST_F(JsonWriter_WriteString_Tests, Formfeed) {
  51. whenInputIs("\f");
  52. outputMustBe("\"\\f\"");
  53. }
  54. TEST_F(JsonWriter_WriteString_Tests, Newline) {
  55. whenInputIs("\n");
  56. outputMustBe("\"\\n\"");
  57. }
  58. TEST_F(JsonWriter_WriteString_Tests, CarriageReturn) {
  59. whenInputIs("\r");
  60. outputMustBe("\"\\r\"");
  61. }
  62. TEST_F(JsonWriter_WriteString_Tests, HorizontalTab) {
  63. whenInputIs("\t");
  64. outputMustBe("\"\\t\"");
  65. }