JsonValueTests.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. public:
  12. TEST_METHOD_INITIALIZE(Initialize)
  13. {
  14. sb = new StringBuilder(buffer, sizeof(buffer));
  15. }
  16. TEST_METHOD(InitialState)
  17. {
  18. assertResultIs("");
  19. }
  20. TEST_METHOD(Null)
  21. {
  22. append((char*)0);
  23. assertResultIs("null");
  24. }
  25. TEST_METHOD(EmptyString)
  26. {
  27. append("");
  28. assertResultIs("\"\"");
  29. }
  30. TEST_METHOD(OneString)
  31. {
  32. append("ABCD");
  33. assertResultIs("\"ABCD\"");
  34. }
  35. TEST_METHOD(OneTwoStrings)
  36. {
  37. append("ABCD");
  38. append("EFGH");
  39. assertResultIs("\"ABCD\"\"EFGH\"");
  40. }
  41. TEST_METHOD(OverCapacity)
  42. {
  43. append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  44. assertResultIs("\"ABCDEFGHIJKLMNOPQR");
  45. append("");
  46. assertResultIs("\"ABCDEFGHIJKLMNOPQR");
  47. }
  48. TEST_METHOD(SpecialChars)
  49. {
  50. append("\\\"\b\f\n\r\t");
  51. assertResultIs("\"\\\\\\\"\\b\\f\\n\\r\\t\"");
  52. }
  53. TEST_METHOD(Number)
  54. {
  55. append(3.14);
  56. assertResultIs("3.14");
  57. }
  58. template<typename T>
  59. void append(T value)
  60. {
  61. JsonValue(value).writeTo(*sb);
  62. }
  63. void assertResultIs(const char* expected)
  64. {
  65. Assert::AreEqual(expected, buffer);
  66. }
  67. };
  68. }