JsonParser_Variant_Tests.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. template <typename T>
  23. void resultTypeMustBe() {
  24. EXPECT_TRUE(_result.is<T>());
  25. }
  26. void resultMustBeInvalid() { EXPECT_FALSE(_result.success()); }
  27. void resultMustBeValid() { EXPECT_TRUE(_result.success()); }
  28. private:
  29. DynamicJsonBuffer _jsonBuffer;
  30. JsonVariant _result;
  31. char _jsonString[256];
  32. };
  33. TEST_F(JsonParser_Variant_Test, EmptyObject) {
  34. whenInputIs("{}");
  35. resultMustBeValid();
  36. resultTypeMustBe<JsonObject>();
  37. }
  38. TEST_F(JsonParser_Variant_Test, EmptyArray) {
  39. whenInputIs("[]");
  40. resultMustBeValid();
  41. resultTypeMustBe<JsonArray>();
  42. }
  43. TEST_F(JsonParser_Variant_Test, Integer) {
  44. whenInputIs("42");
  45. resultMustBeValid();
  46. resultTypeMustBe<int>();
  47. resultMustEqual(42);
  48. }
  49. TEST_F(JsonParser_Variant_Test, Double) {
  50. whenInputIs("3.14");
  51. resultMustBeValid();
  52. resultTypeMustBe<double>();
  53. resultMustEqual(3.14);
  54. }
  55. TEST_F(JsonParser_Variant_Test, String) {
  56. whenInputIs("\"hello world\"");
  57. resultMustBeValid();
  58. resultTypeMustBe<char*>();
  59. resultMustEqual("hello world");
  60. }
  61. TEST_F(JsonParser_Variant_Test, True) {
  62. whenInputIs("true");
  63. resultMustBeValid();
  64. resultTypeMustBe<bool>();
  65. resultMustEqual(true);
  66. }
  67. TEST_F(JsonParser_Variant_Test, False) {
  68. whenInputIs("false");
  69. resultMustBeValid();
  70. resultTypeMustBe<bool>();
  71. resultMustEqual(false);
  72. }
  73. TEST_F(JsonParser_Variant_Test, Invalid) {
  74. whenInputIs("{");
  75. resultMustBeInvalid();
  76. }