JsonValueTests.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. TEST_METHOD(DoubleDefaultDigits)
  64. {
  65. write(3.14159265358979323846);
  66. assertResultIs("3.14");
  67. }
  68. TEST_METHOD(DoubleZeroDigits)
  69. {
  70. write(3.14159265358979323846, 0);
  71. assertResultIs("3");
  72. }
  73. TEST_METHOD(DoubleOneDigit)
  74. {
  75. write(3.14159265358979323846, 1);
  76. assertResultIs("3.1");
  77. }
  78. TEST_METHOD(DoubleTwoDigits)
  79. {
  80. write(3.14159265358979323846, 2);
  81. assertResultIs("3.14");
  82. }
  83. TEST_METHOD(Integer)
  84. {
  85. write(314);
  86. assertResultIs("314");
  87. }
  88. TEST_METHOD(Short)
  89. {
  90. write((short)314);
  91. assertResultIs("314");
  92. }
  93. TEST_METHOD(Long)
  94. {
  95. write(314L);
  96. assertResultIs("314");
  97. }
  98. template<typename T>
  99. void write(T value)
  100. {
  101. StringBuilder sb(buffer, sizeof(buffer));
  102. returnValue = JsonValue(value).printTo(sb);
  103. }
  104. void write(double value, int digits)
  105. {
  106. StringBuilder sb(buffer, sizeof(buffer));
  107. returnValue = JsonValue(value, digits).printTo(sb);
  108. }
  109. void assertResultIs(const char* expected)
  110. {
  111. Assert::AreEqual(expected, buffer);
  112. Assert::AreEqual(strlen(expected), returnValue);
  113. }
  114. };
  115. }