projects
/
folly.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Unit test showing array assignment problem on gcc 4.9
[folly.git]
/
folly
/
test
/
DynamicTest.cpp
diff --git
a/folly/test/DynamicTest.cpp
b/folly/test/DynamicTest.cpp
index 97af70be462e6df6b3f7f5561e48191f1b323cb3..83e21cf6a4f810961f2598026359e46640d0aa05 100644
(file)
--- 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 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");
("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);
auto newMergeObj = dynamic::merge(mergeObj1, mergeObj2);
- EXPECT_EQ(newMergeObj, combined
Obj
);
+ EXPECT_EQ(newMergeObj, combined
PreferObj2
);
EXPECT_EQ(mergeObj1, origMergeObj1); // mergeObj1 should be unchanged
mergeObj1.update(mergeObj2);
EXPECT_EQ(mergeObj1, origMergeObj1); // mergeObj1 should be unchanged
mergeObj1.update(mergeObj2);
- EXPECT_EQ(mergeObj1, combined
Obj
);
+ EXPECT_EQ(mergeObj1, combined
PreferObj2
);
dynamic arr = { 1, 2, 3, 4, 5, 6 };
EXPECT_THROW(mergeObj1.update(arr), std::exception);
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) {
}
TEST(Dynamic, ObjectErase) {
@@
-216,12
+229,25
@@
TEST(Dynamic, DeepCopy) {
EXPECT_EQ(obj2.at("a"), expected);
}
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;
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<int>(foo)
+ << " instead of throwing";
} catch (std::exception const& e) {
caught = true;
}
} catch (std::exception const& e) {
caught = true;
}