JsonValueTests.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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[20];
  10. StringBuilder* sb;
  11. size_t returnValue;
  12. public:
  13. TEST_METHOD_INITIALIZE(Initialize)
  14. {
  15. sb = new StringBuilder(buffer, sizeof(buffer));
  16. }
  17. TEST_METHOD(InitialState)
  18. {
  19. assertResultIs("");
  20. }
  21. TEST_METHOD(Null)
  22. {
  23. write((char*)0);
  24. assertReturns(4);
  25. assertResultIs("null");
  26. }
  27. TEST_METHOD(EmptyString)
  28. {
  29. write("");
  30. assertReturns(2);
  31. assertResultIs("\"\"");
  32. }
  33. TEST_METHOD(OneString)
  34. {
  35. write("ABCD");
  36. assertReturns(6);
  37. assertResultIs("\"ABCD\"");
  38. }
  39. TEST_METHOD(OneTwoStrings)
  40. {
  41. write("ABCD");
  42. assertReturns(6);
  43. write("EFGH");
  44. assertReturns(6);
  45. assertResultIs("\"ABCD\"\"EFGH\"");
  46. }
  47. TEST_METHOD(OverCapacity)
  48. {
  49. write("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  50. assertReturns(19);
  51. assertResultIs("\"ABCDEFGHIJKLMNOPQR");
  52. write("ABC");
  53. assertReturns(0);
  54. assertResultIs("\"ABCDEFGHIJKLMNOPQR");
  55. }
  56. TEST_METHOD(SpecialChars)
  57. {
  58. write("\\\"\b\f\n\r\t");
  59. assertReturns(16);
  60. assertResultIs("\"\\\\\\\"\\b\\f\\n\\r\\t\"");
  61. }
  62. TEST_METHOD(Number)
  63. {
  64. write(3.14);
  65. assertReturns(4);
  66. assertResultIs("3.14");
  67. }
  68. template<typename T>
  69. void write(T value)
  70. {
  71. returnValue = JsonValue(value).printTo(*sb);
  72. }
  73. void assertResultIs(const char* expected)
  74. {
  75. Assert::AreEqual(expected, buffer);
  76. }
  77. void assertReturns(size_t expected)
  78. {
  79. Assert::AreEqual(expected, returnValue);
  80. }
  81. };
  82. }