PrettyPrint_Object_Tests.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*
  2. * Arduino JSON library
  3. * Benoit Blanchon 2014 - MIT License
  4. */
  5. #include "CppUnitTest.h"
  6. #include "PrettyPrintDecorator.h"
  7. #include "StringBuilder.h"
  8. using namespace ArduinoJson::Internals;
  9. using namespace Microsoft::VisualStudio::CppUnitTestFramework;
  10. namespace JsonGeneratorTests
  11. {
  12. TEST_CLASS(PrettyPrint_Object_Tests)
  13. {
  14. char buffer[1024];
  15. size_t returnValue;
  16. public:
  17. TEST_METHOD(EmptyObject)
  18. {
  19. whenInputIs("{}");
  20. outputMustBe("{}");
  21. }
  22. TEST_METHOD(OneMember)
  23. {
  24. whenInputIs("{\"key\":\"value\"}");
  25. outputMustBe(
  26. "{\n"
  27. " \"key\": \"value\"\n"
  28. "}");
  29. }
  30. TEST_METHOD(TwoMembers)
  31. {
  32. whenInputIs("{\"key1\":\"value1\",\"key2\":\"value2\"}");
  33. outputMustBe(
  34. "{\n"
  35. " \"key1\": \"value1\",\n"
  36. " \"key2\": \"value2\"\n"
  37. "}");
  38. }
  39. TEST_METHOD(EmptyNestedObjects)
  40. {
  41. whenInputIs("{\"key1\":{},\"key2\":{}}");
  42. outputMustBe(
  43. "{\n"
  44. " \"key1\": {},\n"
  45. " \"key2\": {}\n"
  46. "}");
  47. }
  48. TEST_METHOD(NestedObjects)
  49. {
  50. whenInputIs("{\"key1\":{\"a\":1},\"key2\":{\"b\":2}}");
  51. outputMustBe(
  52. "{\n"
  53. " \"key1\": {\n"
  54. " \"a\": 1\n"
  55. " },\n"
  56. " \"key2\": {\n"
  57. " \"b\": 2\n"
  58. " }\n"
  59. "}");
  60. }
  61. private:
  62. void whenInputIs(const char input[])
  63. {
  64. StringBuilder sb(buffer, sizeof(buffer));
  65. PrettyPrintDecorator decorator(sb);
  66. returnValue = decorator.print(input);
  67. }
  68. void outputMustBe(const char* expected)
  69. {
  70. Assert::AreEqual(expected, buffer);
  71. Assert::AreEqual(strlen(expected), returnValue);
  72. }
  73. };
  74. }