JsonVariant_Copy_Tests.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright Benoit Blanchon 2014
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. #include <gtest/gtest.h>
  7. #include <ArduinoJson/StaticJsonBuffer.hpp>
  8. #include <ArduinoJson/JsonArray.hpp>
  9. #include <ArduinoJson/JsonObject.hpp>
  10. using namespace ArduinoJson;
  11. class JsonVariant_Copy_Tests : public ::testing::Test {
  12. protected:
  13. StaticJsonBuffer<200> json;
  14. JsonVariant variant1;
  15. JsonVariant variant2;
  16. };
  17. TEST_F(JsonVariant_Copy_Tests, IntegersAreCopiedByValue) {
  18. variant1 = 123;
  19. variant2 = variant1;
  20. variant1 = 456;
  21. EXPECT_EQ(123, variant2.as<int>());
  22. }
  23. TEST_F(JsonVariant_Copy_Tests, DoublesAreCopiedByValue) {
  24. variant1 = 123.45;
  25. variant2 = variant1;
  26. variant1 = 456.78;
  27. EXPECT_EQ(123.45, variant2.as<double>());
  28. }
  29. TEST_F(JsonVariant_Copy_Tests, BooleansAreCopiedByValue) {
  30. variant1 = true;
  31. variant2 = variant1;
  32. variant1 = false;
  33. EXPECT_TRUE(variant2.as<bool>());
  34. }
  35. TEST_F(JsonVariant_Copy_Tests, StringsAreCopiedByValue) {
  36. variant1 = "hello";
  37. variant2 = variant1;
  38. variant1 = "world";
  39. EXPECT_STREQ("hello", variant2.as<const char *>());
  40. }
  41. TEST_F(JsonVariant_Copy_Tests, ObjectsAreCopiedByReference) {
  42. JsonObject &object = json.createObject();
  43. variant1 = object;
  44. object["hello"] = "world";
  45. EXPECT_EQ(1, variant1.asObject().size());
  46. }
  47. TEST_F(JsonVariant_Copy_Tests, ArraysAreCopiedByReference) {
  48. JsonArray &array = json.createArray();
  49. variant1 = array;
  50. array.add("world");
  51. EXPECT_EQ(1, variant1.asArray().size());
  52. }