JsonParser_Variant_Tests.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. // Copyright Benoit Blanchon 2014-2016
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. // If you like this project, please add a star!
  7. #include <gtest/gtest.h>
  8. #include <ArduinoJson.h>
  9. class JsonParser_Variant_Test : public testing::Test {
  10. protected:
  11. void whenInputIs(const char* jsonString) {
  12. strcpy(_jsonString, jsonString);
  13. _result = _jsonBuffer.parse(_jsonString);
  14. }
  15. template <typename T>
  16. void resultMustEqual(T expected) {
  17. EXPECT_EQ(expected, _result.as<T>());
  18. }
  19. void resultMustEqual(const char* expected) {
  20. EXPECT_STREQ(expected, _result.as<char*>());
  21. }
  22. void resultMustEqual(double expected) {
  23. EXPECT_DOUBLE_EQ(expected, _result.as<double>());
  24. }
  25. template <typename T>
  26. void resultTypeMustBe() {
  27. EXPECT_TRUE(_result.is<T>());
  28. }
  29. void resultMustBeInvalid() {
  30. EXPECT_FALSE(_result.success());
  31. }
  32. void resultMustBeValid() {
  33. EXPECT_TRUE(_result.success());
  34. }
  35. template <typename T>
  36. void verify(const char* input, T expected) {
  37. whenInputIs(input);
  38. resultMustBeValid();
  39. resultTypeMustBe<T>();
  40. resultMustEqual(expected);
  41. }
  42. private:
  43. DynamicJsonBuffer _jsonBuffer;
  44. JsonVariant _result;
  45. char _jsonString[256];
  46. };
  47. TEST_F(JsonParser_Variant_Test, EmptyObject) {
  48. whenInputIs("{}");
  49. resultMustBeValid();
  50. resultTypeMustBe<JsonObject>();
  51. }
  52. TEST_F(JsonParser_Variant_Test, EmptyArray) {
  53. whenInputIs("[]");
  54. resultMustBeValid();
  55. resultTypeMustBe<JsonArray>();
  56. }
  57. TEST_F(JsonParser_Variant_Test, Integer) {
  58. verify("42", 42);
  59. verify("-42", -42);
  60. }
  61. TEST_F(JsonParser_Variant_Test, Double) {
  62. verify("3.14", 3.14);
  63. verify("3.14", 3.14);
  64. verify("1E+10", 1E+10);
  65. verify("-1E+10", -1E+10);
  66. verify("1.234E+10", 1.234E+10);
  67. verify("1.79769e+308", 1.79769e+308);
  68. verify("-1.79769e+308", -1.79769e+308);
  69. verify("1.7976931348623157e+308", 1.7976931348623157e+308);
  70. verify("0.017976931348623157e+310", 0.017976931348623157e+310);
  71. }
  72. TEST_F(JsonParser_Variant_Test, String) {
  73. verify("\"hello world\"", "hello world");
  74. }
  75. TEST_F(JsonParser_Variant_Test, True) {
  76. verify("true", true);
  77. verify("false", false);
  78. }
  79. TEST_F(JsonParser_Variant_Test, Invalid) {
  80. whenInputIs("{");
  81. resultMustBeInvalid();
  82. }