#include "../binary-trees/binarytree.hpp" #include "testutil.hpp" #include void FillWithRandomNumbers(BinaryTree::Tree & tree, std::unordered_set & control, unsigned const count = 512u) { for(unsigned i = 0u; i < count; ++i) { unsigned const value = Util::GetRandomNumber(); control.insert(value); tree.Insert(value); } } bool TestInsertContains() { std::unordered_set control; BinaryTree::Tree tree; FillWithRandomNumbers(tree, control); bool good = true; for(auto const & num : control) { if(!tree.Contains(num)) { std::printf("Value %u inserted but cannot be found!\n", num); good = false; } } return good; } bool TestDeletion() { std::unordered_set control; BinaryTree::Tree tree; FillWithRandomNumbers(tree, control); unsigned i = 0u; unsigned const toDeleteCount = control.size() / 4; while(i < toDeleteCount) { auto const toDelete = Util::GetRandomNumber(); auto iter = control.find(toDelete); if(iter != control.end()) { control.erase(iter); tree.Delete(i); ++i; } } bool good = true; for(auto const & num : control) { if(!tree.Contains(num)) { std::printf("Value %u inserted but cannot be found!\n", num); good = false; } } return good; } int main() { Test::Execute(TestInsertContains, "Insertion and find test"); Test::Execute(TestDeletion, "Insertion and deletion test"); return 0; }