JsonArrayTests.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. #include "CppUnitTest.h"
  2. #include "JsonArray.h"
  3. #include "JsonHashTable.h"
  4. using namespace Microsoft::VisualStudio::CppUnitTestFramework;
  5. namespace JsonGeneratorTests
  6. {
  7. TEST_CLASS(JsonArrayTests)
  8. {
  9. public:
  10. TEST_METHOD(Empty)
  11. {
  12. jsonIs("[]");
  13. }
  14. TEST_METHOD(Null)
  15. {
  16. addValue((char*)0);
  17. jsonIs("[null]");
  18. }
  19. TEST_METHOD(OneString)
  20. {
  21. addValue("hello");
  22. jsonIs("[\"hello\"]");
  23. }
  24. TEST_METHOD(TwoStrings)
  25. {
  26. addValue("hello");
  27. addValue("world");
  28. jsonIs("[\"hello\",\"world\"]");
  29. }
  30. TEST_METHOD(AddOneStringOverCapacity)
  31. {
  32. addValue("hello");
  33. addValue("world");
  34. addValue("lost");
  35. jsonIs("[\"hello\",\"world\"]");
  36. }
  37. TEST_METHOD(AddOneNumber)
  38. {
  39. addValue(3.14);
  40. jsonIs("[3.14]");
  41. }
  42. TEST_METHOD(AddTwoNumbers)
  43. {
  44. addValue(3.14);
  45. addValue(2.72);
  46. jsonIs("[3.14,2.72]");
  47. }
  48. TEST_METHOD(AddOneNumberOverCapacity)
  49. {
  50. addValue(3.14);
  51. addValue(2.72);
  52. addValue(1.41);
  53. jsonIs("[3.14,2.72]");
  54. }
  55. TEST_METHOD(AddTrue)
  56. {
  57. addValue(true);
  58. jsonIs("[true]");
  59. }
  60. TEST_METHOD(AddFalse)
  61. {
  62. addValue(false);
  63. jsonIs("[false]");
  64. }
  65. TEST_METHOD(AddTwoBooleans)
  66. {
  67. addValue(false);
  68. addValue(true);
  69. jsonIs("[false,true]");
  70. }
  71. TEST_METHOD(AddOneBooleanOverCapacity)
  72. {
  73. addValue(false);
  74. addValue(true);
  75. addValue(false);
  76. jsonIs("[false,true]");
  77. }
  78. TEST_METHOD(AddOneEmptyNestedArray)
  79. {
  80. JsonArray<1> nestedArray;
  81. addNested(nestedArray);
  82. jsonIs("[[]]");
  83. }
  84. TEST_METHOD(AddOneEmptyNestedHash)
  85. {
  86. JsonHashTable<1> nestedHash;
  87. addNested(nestedHash);
  88. jsonIs("[{}]");
  89. }
  90. TEST_METHOD(AddOneNestedArrayWithOneItem)
  91. {
  92. JsonArray<1> nestedArray;
  93. nestedArray.add(3.14);
  94. addNested(nestedArray);
  95. jsonIs("[[3.14]]");
  96. }
  97. private:
  98. JsonArray<2> arr;
  99. void addNested(JsonObjectBase& value)
  100. {
  101. arr.add(value);
  102. }
  103. template<typename T>
  104. void addValue(T value)
  105. {
  106. arr.add(value);
  107. }
  108. void jsonIs(const char* expected)
  109. {
  110. char buffer[256];
  111. arr.writeTo(buffer, sizeof(buffer));
  112. Assert::AreEqual(expected, buffer);
  113. }
  114. };
  115. }