parse.cpp 2.1 KB

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