copy.cpp 1.3 KB

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