| @@ -24,6 +24,26 @@ public: | |||||
| { | { | ||||
| } | } | ||||
| avl_tree(avl_tree const & other) : | |||||
| m_root(nullptr) | |||||
| { | |||||
| for (auto iterator : other) | |||||
| this->insert(iterator.key, iterator.value); | |||||
| } | |||||
| avl_tree & operator=(avl_tree const & other) | |||||
| { | |||||
| if (this->m_root) | |||||
| { | |||||
| this->m_root->cascade_delete(); | |||||
| delete this->m_root; | |||||
| this->m_root = nullptr; | |||||
| } | |||||
| for (auto iterator : other) | |||||
| this->insert(iterator.key, iterator.value); | |||||
| } | |||||
| ~avl_tree() | ~avl_tree() | ||||
| { | { | ||||
| if (this->m_root) | if (this->m_root) | ||||
| @@ -190,6 +190,25 @@ lolunit_declare_fixture(AvlTreeTest) | |||||
| tmp = iterator.key; | tmp = iterator.key; | ||||
| } | } | ||||
| } | } | ||||
| lolunit_declare_test(AvlTreeTestIteratorCopy) | |||||
| { | |||||
| test_tree tree; | |||||
| for (int i = 1 ; i < 100 ; ++i) | |||||
| tree.insert(i, 2 * i + i % 3); | |||||
| test_tree other = tree; | |||||
| int tmp = 0; | |||||
| for (auto iterator : other) | |||||
| { | |||||
| lolunit_assert_equal(iterator.key > tmp, true); | |||||
| lolunit_assert_equal(iterator.value == (iterator.key * 2 + iterator.key % 3), true); | |||||
| tmp = iterator.key; | |||||
| } | |||||
| } | |||||
| }; | }; | ||||
| } | } | ||||