JsonWriter_WriteString_Tests.cpp 1.8 KB

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