#include "../tree/binarytree.hpp" #include "testutil.hpp" #include void FillWithRandomNumbers(BinaryTree::Tree & tree, std::vector & control, unsigned const count = 512u) { for(unsigned i = 0u; i < count; ++i) { unsigned const value = Util::GetRandomNumber(); control.push_back(value); tree.Insert(value); } } bool TestInsertContains() { std::vector control; BinaryTree::Tree tree; FillWithRandomNumbers(tree, control); bool good = true; for(auto const & num : control) { if(!tree.Contains(num)) { std::printf("\tValue %u inserted but cannot be found!\n", num); good = false; } } return good; } bool TestDeletion() { std::vector control; BinaryTree::Tree tree; FillWithRandomNumbers(tree, control); unsigned const toDeleteCount = control.size() / 4; for(unsigned i = 0u; i < toDeleteCount; ++i) { auto const toDeleteIndex = Util::GetRandomNumber() % control.size(); auto const toDeleteValue = control[toDeleteIndex]; control.erase(control.begin() + toDeleteIndex); tree.Delete(toDeleteValue); } 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; }