JsonValueTests.cpp 3.0 KB

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