X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2Ftest%2FDynamicTest.cpp;h=83e21cf6a4f810961f2598026359e46640d0aa05;hp=97af70be462e6df6b3f7f5561e48191f1b323cb3;hb=97c7b417342e8c941aedfaf811fab0332718cd01;hpb=84138864d0f593e23c76deb3b9da430cbb0a4ab2 diff --git a/folly/test/DynamicTest.cpp b/folly/test/DynamicTest.cpp index 97af70be..83e21cf6 100644 --- a/folly/test/DynamicTest.cpp +++ b/folly/test/DynamicTest.cpp @@ -107,18 +107,31 @@ TEST(Dynamic, ObjectBasics) { dynamic mergeObj2 = folly::dynamic::object ("key2", "value3") ("key3", "value4"); - dynamic combinedObj = folly::dynamic::object + + // Merged object where we prefer the values in mergeObj2 + dynamic combinedPreferObj2 = folly::dynamic::object ("key1", "value1") ("key2", "value3") ("key3", "value4"); + + // Merged object where we prefer the values in mergeObj1 + dynamic combinedPreferObj1 = folly::dynamic::object + ("key1", "value1") + ("key2", "value2") + ("key3", "value4"); + auto newMergeObj = dynamic::merge(mergeObj1, mergeObj2); - EXPECT_EQ(newMergeObj, combinedObj); + EXPECT_EQ(newMergeObj, combinedPreferObj2); EXPECT_EQ(mergeObj1, origMergeObj1); // mergeObj1 should be unchanged mergeObj1.update(mergeObj2); - EXPECT_EQ(mergeObj1, combinedObj); + EXPECT_EQ(mergeObj1, combinedPreferObj2); dynamic arr = { 1, 2, 3, 4, 5, 6 }; EXPECT_THROW(mergeObj1.update(arr), std::exception); + + mergeObj1 = origMergeObj1; // reset it + mergeObj1.update_missing(mergeObj2); + EXPECT_EQ(mergeObj1, combinedPreferObj1); } TEST(Dynamic, ObjectErase) { @@ -216,12 +229,25 @@ TEST(Dynamic, DeepCopy) { EXPECT_EQ(obj2.at("a"), expected); } +TEST(Dynamic, ArrayReassignment) { + dynamic o = 1; + + dynamic d1 = {o}; + EXPECT_EQ(dynamic::ARRAY, d1.type()); + + d1 = {o}; + EXPECT_EQ(dynamic::ARRAY, d1.type()); +} + TEST(Dynamic, Operator) { bool caught = false; try { dynamic d1 = dynamic::object; dynamic d2 = dynamic::object; auto foo = d1 < d2; + LOG(ERROR) << "operator < returned " + << static_cast(foo) + << " instead of throwing"; } catch (std::exception const& e) { caught = true; }