// Copyright Benoit Blanchon 2014-2017 // MIT License // // Arduino JSON library // https://github.com/bblanchon/ArduinoJson // If you like this project, please add a star! #include #include class JsonObject_Set_Tests : public ::testing::Test { public: JsonObject_Set_Tests() : _object(_jsonBuffer.createObject()) {} protected: DynamicJsonBuffer _jsonBuffer; JsonObject& _object; }; #define TEST_(name) TEST_F(JsonObject_Set_Tests, name) TEST_(SizeIncreased_WhenValuesAreAdded) { _object.set("hello", 42); EXPECT_EQ(1, _object.size()); } TEST_(SizeUntouched_WhenSameValueIsAdded) { _object["hello"] = 1; _object["hello"] = 2; EXPECT_EQ(1, _object.size()); } TEST_(StoreInteger) { _object.set("hello", 123); EXPECT_EQ(123, _object["hello"].as()); EXPECT_TRUE(_object["hello"].is()); EXPECT_FALSE(_object["hello"].is()); } TEST_(StoreDouble) { _object.set("hello", 123.45); EXPECT_EQ(123.45, _object["hello"].as()); EXPECT_TRUE(_object["hello"].is()); EXPECT_FALSE(_object["hello"].is()); } TEST_(StoreDoubleWithDigits) { _object.set("hello", 123.45, 2); EXPECT_EQ(123.45, _object["hello"].as()); EXPECT_TRUE(_object["hello"].is()); EXPECT_FALSE(_object["hello"].is()); } TEST_(StoreBoolean) { _object.set("hello", true); EXPECT_TRUE(_object["hello"].as()); EXPECT_TRUE(_object["hello"].is()); EXPECT_FALSE(_object["hello"].is()); } TEST_(StoreString) { _object.set("hello", "h3110"); EXPECT_STREQ("h3110", _object["hello"].as()); EXPECT_TRUE(_object["hello"].is()); EXPECT_FALSE(_object["hello"].is()); } TEST_(StoreArray) { JsonArray& arr = _jsonBuffer.createArray(); _object.set("hello", arr); EXPECT_EQ(&arr, &_object["hello"].as()); EXPECT_TRUE(_object["hello"].is()); EXPECT_FALSE(_object["hello"].is()); } TEST_(StoreObject) { JsonObject& obj = _jsonBuffer.createObject(); _object.set("hello", obj); EXPECT_EQ(&obj, &_object["hello"].as()); EXPECT_TRUE(_object["hello"].is()); EXPECT_FALSE(_object["hello"].is()); } TEST_(StoreArraySubscript) { JsonArray& arr = _jsonBuffer.createArray(); arr.add(42); _object.set("a", arr[0]); EXPECT_EQ(42, _object["a"]); } TEST_(StoreObjectSubscript) { JsonObject& obj = _jsonBuffer.createObject(); obj.set("x", 42); _object.set("a", obj["x"]); EXPECT_EQ(42, _object["a"]); } TEST_(ShouldReturnTrue_WhenAllocationSucceeds) { StaticJsonBuffer jsonBuffer; JsonObject& obj = jsonBuffer.createObject(); bool result = obj.set(std::string("hello"), std::string("world")); ASSERT_TRUE(result); } TEST_(ShouldReturnFalse_WhenAllocationFails) { StaticJsonBuffer jsonBuffer; JsonObject& obj = jsonBuffer.createObject(); bool result = obj.set(std::string("hello"), std::string("world")); ASSERT_FALSE(result); }