std_stream.cpp 2.2 KB

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