JsonHashTableTests.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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(JsonHashTableTests)
  8. {
  9. JsonHashTable<2> hash;
  10. char buffer[256];
  11. public:
  12. TEST_METHOD(Empty)
  13. {
  14. jsonIs("{}");
  15. }
  16. TEST_METHOD(OneString)
  17. {
  18. addValue("key", "value");
  19. jsonIs("{\"key\":\"value\"}");
  20. }
  21. TEST_METHOD(TwoStrings)
  22. {
  23. addValue("key1", "value1");
  24. addValue("key2", "value2");
  25. jsonIs("{\"key1\":\"value1\",\"key2\":\"value2\"}");
  26. }
  27. TEST_METHOD(OneStringOverCapacity)
  28. {
  29. addValue("key1", "value1");
  30. addValue("key2", "value2");
  31. addValue("key3", "value3");
  32. jsonIs("{\"key1\":\"value1\",\"key2\":\"value2\"}");
  33. }
  34. TEST_METHOD(OneInteger)
  35. {
  36. addValue("key", 1);
  37. jsonIs("{\"key\":1}");
  38. }
  39. TEST_METHOD(OneDouble)
  40. {
  41. addValue("key", 3.14159265358979323846, 4);
  42. jsonIs("{\"key\":3.1416}");
  43. }
  44. TEST_METHOD(OneNull)
  45. {
  46. addValue("key", (char*) 0);
  47. jsonIs("{\"key\":null}");
  48. }
  49. TEST_METHOD(OneTrue)
  50. {
  51. addValue("key", true);
  52. jsonIs("{\"key\":true}");
  53. }
  54. TEST_METHOD(OneFalse)
  55. {
  56. addValue("key", false);
  57. jsonIs("{\"key\":false}");
  58. }
  59. TEST_METHOD(OneEmptyNestedArray)
  60. {
  61. JsonArray<1> nestedArray;
  62. addNested("key", nestedArray);
  63. jsonIs("{\"key\":[]}");
  64. }
  65. TEST_METHOD(OneEmptyNestedHash)
  66. {
  67. JsonHashTable<1> nestedHash;
  68. addNested("key", nestedHash);
  69. jsonIs("{\"key\":{}}");
  70. }
  71. private:
  72. void addNested(const char* key, JsonObjectBase& value)
  73. {
  74. hash.add(key, value);
  75. }
  76. template<typename T>
  77. void addValue(const char* key, T value)
  78. {
  79. hash.add(key, value);
  80. }
  81. void addValue(const char* key, double value, int digits)
  82. {
  83. hash.add(key, value, digits);
  84. }
  85. void jsonIs(const char* expected)
  86. {
  87. size_t actual = hash.printTo(buffer, sizeof(buffer));
  88. Assert::AreEqual(expected, buffer);
  89. Assert::AreEqual(strlen(expected), actual);
  90. }
  91. };
  92. }