Ver Fonte

Add new tests for:
> copy-assignment
> move-assignment
> erase non-existent element

Sam Jaffe há 7 anos atrás
pai
commit
12c2fb596e
1 ficheiros alterados com 21 adições e 0 exclusões
  1. 21 0
      trie_test.cpp

+ 21 - 0
trie_test.cpp

@@ -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);
+}