parse.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2023
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. using namespace Catch::Matchers;
  7. TEST_CASE("JsonBuffer::parse()") {
  8. DynamicJsonBuffer jb;
  9. SECTION("EmptyObject") {
  10. JsonVariant variant = jb.parse("{}");
  11. REQUIRE(variant.success());
  12. REQUIRE(variant.is<JsonObject>());
  13. }
  14. SECTION("EmptyArray") {
  15. JsonVariant variant = jb.parse("[]");
  16. REQUIRE(variant.success());
  17. REQUIRE(variant.is<JsonArray>());
  18. }
  19. SECTION("Integer") {
  20. JsonVariant variant = jb.parse("-42");
  21. REQUIRE(variant.success());
  22. REQUIRE(variant.is<int>());
  23. REQUIRE_FALSE(variant.is<bool>());
  24. REQUIRE(variant == -42);
  25. }
  26. SECTION("Double") {
  27. JsonVariant variant = jb.parse("-1.23e+4");
  28. REQUIRE(variant.success());
  29. REQUIRE_FALSE(variant.is<int>());
  30. REQUIRE(variant.is<double>());
  31. REQUIRE(variant.as<double>() == Approx(-1.23e+4));
  32. }
  33. SECTION("Double quoted string") {
  34. JsonVariant variant = jb.parse("\"hello world\"");
  35. REQUIRE(variant.success());
  36. REQUIRE(variant.is<char*>());
  37. REQUIRE_THAT(variant.as<char*>(), Equals("hello world"));
  38. }
  39. SECTION("Single quoted string") {
  40. JsonVariant variant = jb.parse("\'hello world\'");
  41. REQUIRE(variant.success());
  42. REQUIRE(variant.is<char*>());
  43. REQUIRE_THAT(variant.as<char*>(), Equals("hello world"));
  44. }
  45. SECTION("True") {
  46. JsonVariant variant = jb.parse("true");
  47. REQUIRE(variant.success());
  48. REQUIRE(variant.is<bool>());
  49. REQUIRE(variant == true);
  50. }
  51. SECTION("False") {
  52. JsonVariant variant = jb.parse("false");
  53. REQUIRE(variant.success());
  54. REQUIRE(variant.is<bool>());
  55. REQUIRE(variant == false);
  56. }
  57. SECTION("OpenBrace") {
  58. JsonVariant variant = jb.parse("{");
  59. REQUIRE_FALSE(variant.success());
  60. }
  61. SECTION("Incomplete string") {
  62. JsonVariant variant = jb.parse("\"hello");
  63. REQUIRE(variant.success());
  64. REQUIRE(variant.is<char*>());
  65. REQUIRE_THAT(variant.as<char*>(), Equals("hello"));
  66. }
  67. }