|
|
@@ -55,12 +55,27 @@ TEST_F(TrieTest, MoveConstructorIsDestructive) {
|
|
|
EXPECT_THAT(flatten(data.cbegin()), std::vector<int>{0});
|
|
|
}
|
|
|
|
|
|
+TEST_F(TrieTest, MoveAssignmentOverwritesAnfRelocates) {
|
|
|
+ Tree value;
|
|
|
+ value[2] = 1;
|
|
|
+ value = std::move(data);
|
|
|
+ EXPECT_THAT(value.find(2), value.end());
|
|
|
+ EXPECT_THAT(value, ::testing::Not(data));
|
|
|
+}
|
|
|
+
|
|
|
TEST_F(TrieTest, CopyConstructorIsDeep) {
|
|
|
Tree copy = data;
|
|
|
copy[{0, 1}] += 1;
|
|
|
EXPECT_THAT(copy, ::testing::Not(::testing::Eq(data)));
|
|
|
}
|
|
|
|
|
|
+TEST_F(TrieTest, CopyAssignmentOverwritesData) {
|
|
|
+ Tree value;
|
|
|
+ value[2] = 1;
|
|
|
+ value = data;
|
|
|
+ EXPECT_THAT(value, data);
|
|
|
+}
|
|
|
+
|
|
|
TEST_F(TrieTest, EqualityIsPathSensitive) {
|
|
|
Tree t1, t2;
|
|
|
t1[1] = 1;
|
|
|
@@ -141,3 +156,9 @@ TEST_F(TrieTest, EraseDropsWholeBranch) {
|
|
|
EXPECT_THAT(data.find({0, 1}), data.end());
|
|
|
EXPECT_THAT(data.find(0), data.end());
|
|
|
}
|
|
|
+
|
|
|
+TEST_F(TrieTest, EraseNonExistentElementIsNoOp) {
|
|
|
+ Tree copy = data;
|
|
|
+ copy.erase(-1);
|
|
|
+ EXPECT_THAT(copy, data);
|
|
|
+}
|