JsonValueTests.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #include "CppUnitTest.h"
  2. #include "StringBuilder.h"
  3. #include "JsonValue.h"
  4. using namespace Microsoft::VisualStudio::CppUnitTestFramework;
  5. using namespace ArduinoJson::Generator;
  6. namespace JsonGeneratorTests
  7. {
  8. TEST_CLASS(JsonValueTests)
  9. {
  10. char buffer[1024];
  11. size_t returnValue;
  12. public:
  13. TEST_METHOD(Null)
  14. {
  15. write((char*)0);
  16. assertResultIs("null");
  17. }
  18. TEST_METHOD(EmptyString)
  19. {
  20. write("");
  21. assertResultIs("\"\"");
  22. }
  23. TEST_METHOD(QuotationMark)
  24. {
  25. write("\"");
  26. assertResultIs("\"\\\"\"");
  27. }
  28. TEST_METHOD(ReverseSolidus)
  29. {
  30. write("\\");
  31. assertResultIs("\"\\\\\"");
  32. }
  33. TEST_METHOD(Solidus)
  34. {
  35. write("/");
  36. assertResultIs("\"/\""); // but the JSON format allows \/
  37. }
  38. TEST_METHOD(Backspace)
  39. {
  40. write("\b");
  41. assertResultIs("\"\\b\"");
  42. }
  43. TEST_METHOD(Formfeed)
  44. {
  45. write("\f");
  46. assertResultIs("\"\\f\"");
  47. }
  48. TEST_METHOD(Newline)
  49. {
  50. write("\n");
  51. assertResultIs("\"\\n\"");
  52. }
  53. TEST_METHOD(CarriageReturn)
  54. {
  55. write("\r");
  56. assertResultIs("\"\\r\"");
  57. }
  58. TEST_METHOD(HorizontalTab)
  59. {
  60. write("\t");
  61. assertResultIs("\"\\t\"");
  62. }
  63. /*
  64. TEST_METHOD(DoubleDefaultDigits)
  65. {
  66. write(3.14159265358979323846);
  67. assertResultIs("3.14");
  68. }*/
  69. TEST_METHOD(DoubleZeroDigits)
  70. {
  71. write<0>(3.14159265358979323846);
  72. assertResultIs("3");
  73. }
  74. TEST_METHOD(DoubleOneDigit)
  75. {
  76. write<1>(3.14159265358979323846);
  77. assertResultIs("3.1");
  78. }
  79. TEST_METHOD(DoubleTwoDigits)
  80. {
  81. write<2>(3.14159265358979323846);
  82. assertResultIs("3.14");
  83. }
  84. TEST_METHOD(Integer)
  85. {
  86. write(314);
  87. assertResultIs("314");
  88. }
  89. TEST_METHOD(Short)
  90. {
  91. write((short)314);
  92. assertResultIs("314");
  93. }
  94. TEST_METHOD(Long)
  95. {
  96. write(314L);
  97. assertResultIs("314");
  98. }
  99. template<typename T>
  100. void write(T value)
  101. {
  102. StringBuilder sb(buffer, sizeof(buffer));
  103. JsonValue jsonValue;
  104. jsonValue.set(value);
  105. returnValue = jsonValue.printTo(sb);
  106. }
  107. template<int DIGITS>
  108. void write(double value)
  109. {
  110. StringBuilder sb(buffer, sizeof(buffer));
  111. JsonValue jsonValue;
  112. jsonValue.set<DIGITS>(value);
  113. returnValue = jsonValue.printTo(sb);
  114. }
  115. void assertResultIs(const char* expected)
  116. {
  117. Assert::AreEqual(expected, buffer);
  118. Assert::AreEqual(strlen(expected), returnValue);
  119. }
  120. };
  121. }