copy.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2018
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. TEST_CASE("JsonVariant copy") {
  7. JsonVariant _variant1;
  8. JsonVariant _variant2;
  9. SECTION("IntegersAreCopiedByValue") {
  10. _variant1 = 123;
  11. _variant2 = _variant1;
  12. _variant1 = 456;
  13. REQUIRE(123 == _variant2.as<int>());
  14. }
  15. SECTION("DoublesAreCopiedByValue") {
  16. _variant1 = 123.45;
  17. _variant2 = _variant1;
  18. _variant1 = 456.78;
  19. REQUIRE(123.45 == _variant2.as<double>());
  20. }
  21. SECTION("BooleansAreCopiedByValue") {
  22. _variant1 = true;
  23. _variant2 = _variant1;
  24. _variant1 = false;
  25. REQUIRE(_variant2.as<bool>());
  26. }
  27. SECTION("StringsAreCopiedByValue") {
  28. _variant1 = "hello";
  29. _variant2 = _variant1;
  30. _variant1 = "world";
  31. REQUIRE(std::string("hello") == _variant2.as<const char*>());
  32. }
  33. SECTION("ObjectsAreCopiedByReference") {
  34. DynamicJsonDocument doc;
  35. JsonObject& object = doc.to<JsonObject>();
  36. _variant1 = object;
  37. object["hello"] = "world";
  38. REQUIRE(1 == _variant1.as<JsonObject>().size());
  39. }
  40. SECTION("ArraysAreCopiedByReference") {
  41. DynamicJsonDocument doc;
  42. JsonArray& array = doc.to<JsonArray>();
  43. _variant1 = array;
  44. array.add("world");
  45. REQUIRE(1 == _variant1.as<JsonArray>().size());
  46. }
  47. }