copy.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. TEST_CASE("JsonVariant copy") {
  10. DynamicJsonBuffer _jsonBuffer;
  11. JsonVariant _variant1;
  12. JsonVariant _variant2;
  13. SECTION("IntegersAreCopiedByValue") {
  14. _variant1 = 123;
  15. _variant2 = _variant1;
  16. _variant1 = 456;
  17. REQUIRE(123 == _variant2.as<int>());
  18. }
  19. SECTION("DoublesAreCopiedByValue") {
  20. _variant1 = 123.45;
  21. _variant2 = _variant1;
  22. _variant1 = 456.78;
  23. REQUIRE(123.45 == _variant2.as<double>());
  24. }
  25. SECTION("BooleansAreCopiedByValue") {
  26. _variant1 = true;
  27. _variant2 = _variant1;
  28. _variant1 = false;
  29. REQUIRE(_variant2.as<bool>());
  30. }
  31. SECTION("StringsAreCopiedByValue") {
  32. _variant1 = "hello";
  33. _variant2 = _variant1;
  34. _variant1 = "world";
  35. REQUIRE(std::string("hello") == _variant2.as<const char *>());
  36. }
  37. SECTION("ObjectsAreCopiedByReference") {
  38. JsonObject &object = _jsonBuffer.createObject();
  39. _variant1 = object;
  40. object["hello"] = "world";
  41. REQUIRE(1 == _variant1.as<JsonObject>().size());
  42. }
  43. SECTION("ArraysAreCopiedByReference") {
  44. JsonArray &array = _jsonBuffer.createArray();
  45. _variant1 = array;
  46. array.add("world");
  47. REQUIRE(1 == _variant1.as<JsonArray>().size());
  48. }
  49. }