std_stream.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2023
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. #include <sstream>
  7. TEST_CASE("std::stream") {
  8. SECTION("JsonVariantFalse") {
  9. std::ostringstream os;
  10. JsonVariant variant = false;
  11. os << variant;
  12. REQUIRE("false" == os.str());
  13. }
  14. SECTION("JsonVariantString") {
  15. std::ostringstream os;
  16. JsonVariant variant = "coucou";
  17. os << variant;
  18. REQUIRE("\"coucou\"" == os.str());
  19. }
  20. SECTION("JsonObject") {
  21. std::ostringstream os;
  22. DynamicJsonBuffer jsonBuffer;
  23. JsonObject& object = jsonBuffer.createObject();
  24. object["key"] = "value";
  25. os << object;
  26. REQUIRE("{\"key\":\"value\"}" == os.str());
  27. }
  28. SECTION("JsonObjectSubscript") {
  29. std::ostringstream os;
  30. DynamicJsonBuffer jsonBuffer;
  31. JsonObject& object = jsonBuffer.createObject();
  32. object["key"] = "value";
  33. os << object["key"];
  34. REQUIRE("\"value\"" == os.str());
  35. }
  36. SECTION("JsonArray") {
  37. std::ostringstream os;
  38. DynamicJsonBuffer jsonBuffer;
  39. JsonArray& array = jsonBuffer.createArray();
  40. array.add("value");
  41. os << array;
  42. REQUIRE("[\"value\"]" == os.str());
  43. }
  44. SECTION("JsonArraySubscript") {
  45. std::ostringstream os;
  46. DynamicJsonBuffer jsonBuffer;
  47. JsonArray& array = jsonBuffer.createArray();
  48. array.add("value");
  49. os << array[0];
  50. REQUIRE("\"value\"" == os.str());
  51. }
  52. SECTION("ParseArray") {
  53. std::istringstream json(" [ 42 /* comment */ ] ");
  54. DynamicJsonBuffer jsonBuffer;
  55. JsonArray& arr = jsonBuffer.parseArray(json);
  56. REQUIRE(true == arr.success());
  57. REQUIRE(1 == arr.size());
  58. REQUIRE(42 == arr[0]);
  59. }
  60. SECTION("ParseObject") {
  61. std::istringstream json(" { hello : world // comment\n }");
  62. DynamicJsonBuffer jsonBuffer;
  63. JsonObject& obj = jsonBuffer.parseObject(json);
  64. REQUIRE(true == obj.success());
  65. REQUIRE(1 == obj.size());
  66. REQUIRE(std::string("world") == obj["hello"]);
  67. }
  68. SECTION("ShouldNotReadPastTheEnd") {
  69. std::istringstream json("{}123");
  70. DynamicJsonBuffer jsonBuffer;
  71. jsonBuffer.parseObject(json);
  72. REQUIRE('1' == json.get());
  73. }
  74. }