Changeset View
Changeset View
Standalone View
Standalone View
src/test/radix_tests.cpp
Show First 20 Lines • Show All 128 Lines • ▼ Show 20 Lines | template <typename E> void testGet() { | ||||
auto three = RCUPtr<E>::make(3); | auto three = RCUPtr<E>::make(3); | ||||
auto keyZero = zero->getId(); | auto keyZero = zero->getId(); | ||||
auto keyOne = one->getId(); | auto keyOne = one->getId(); | ||||
auto keyTwo = two->getId(); | auto keyTwo = two->getId(); | ||||
auto keyThree = three->getId(); | auto keyThree = three->getId(); | ||||
// There are no elements in the tree so far. | // There are no elements in the tree so far. | ||||
BOOST_CHECK_EQUAL(mytree.get(keyOne), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyOne), nullptr); | ||||
// Insert an element into the tree and check it is there. | // Insert an element into the tree and check it is there. | ||||
BOOST_CHECK(mytree.insert(one)); | BOOST_CHECK(mytree.insert(one)); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyOne), one); | BOOST_CHECK_EQUAL(mytree.get(keyOne), one); | ||||
// Let's insert more elements and check they are recovered properly. | // Let's insert more elements and check they are recovered properly. | ||||
BOOST_CHECK_EQUAL(mytree.get(keyZero), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyZero), nullptr); | ||||
BOOST_CHECK(mytree.insert(zero)); | BOOST_CHECK(mytree.insert(zero)); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyZero), zero); | BOOST_CHECK_EQUAL(mytree.get(keyZero), zero); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyOne), one); | BOOST_CHECK_EQUAL(mytree.get(keyOne), one); | ||||
// More elements. | // More elements. | ||||
BOOST_CHECK_EQUAL(mytree.get(keyTwo), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyTwo), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyThree), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyThree), nullptr); | ||||
BOOST_CHECK(mytree.insert(two)); | BOOST_CHECK(mytree.insert(two)); | ||||
BOOST_CHECK(mytree.insert(three)); | BOOST_CHECK(mytree.insert(three)); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyZero), zero); | BOOST_CHECK_EQUAL(mytree.get(keyZero), zero); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyOne), one); | BOOST_CHECK_EQUAL(mytree.get(keyOne), one); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyTwo), two); | BOOST_CHECK_EQUAL(mytree.get(keyTwo), two); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyThree), three); | BOOST_CHECK_EQUAL(mytree.get(keyThree), three); | ||||
auto maxsigned = RCUPtr<E>::make(E::SignedMax()); | auto maxsigned = RCUPtr<E>::make(E::SignedMax()); | ||||
auto minsigned = RCUPtr<E>::make(E::SignedMin()); | auto minsigned = RCUPtr<E>::make(E::SignedMin()); | ||||
auto minusone = RCUPtr<E>::make(E::MinusOne()); | auto minusone = RCUPtr<E>::make(E::MinusOne()); | ||||
auto minustwo = RCUPtr<E>::make(E::MinusTwo()); | auto minustwo = RCUPtr<E>::make(E::MinusTwo()); | ||||
// Check that they are not in the tree. | // Check that they are not in the tree. | ||||
BOOST_CHECK_EQUAL(mytree.get(E::SignedMax()), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(E::SignedMax()), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(E::SignedMin()), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(E::SignedMin()), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(E::MinusOne()), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(E::MinusOne()), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(E::MinusTwo()), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(E::MinusTwo()), nullptr); | ||||
// Insert into the tree. | // Insert into the tree. | ||||
BOOST_CHECK(mytree.insert(maxsigned)); | BOOST_CHECK(mytree.insert(maxsigned)); | ||||
BOOST_CHECK(mytree.insert(minsigned)); | BOOST_CHECK(mytree.insert(minsigned)); | ||||
BOOST_CHECK(mytree.insert(minusone)); | BOOST_CHECK(mytree.insert(minusone)); | ||||
BOOST_CHECK(mytree.insert(minustwo)); | BOOST_CHECK(mytree.insert(minustwo)); | ||||
// And now they all are in the tree. | // And now they all are in the tree. | ||||
Show All 30 Lines | template <typename E> void testRemove() { | ||||
auto keyThree = three->getId(); | auto keyThree = three->getId(); | ||||
// Removing an element that isn't in the tree returns false. | // Removing an element that isn't in the tree returns false. | ||||
BOOST_CHECK(!mytree.remove(keyOne)); | BOOST_CHECK(!mytree.remove(keyOne)); | ||||
// Insert an element into the tree and check you can remove it. | // Insert an element into the tree and check you can remove it. | ||||
BOOST_CHECK(mytree.insert(one)); | BOOST_CHECK(mytree.insert(one)); | ||||
BOOST_CHECK(mytree.remove(keyOne)); | BOOST_CHECK(mytree.remove(keyOne)); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyOne), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyOne), nullptr); | ||||
// Insert several elements and remove them. | // Insert several elements and remove them. | ||||
BOOST_CHECK(mytree.insert(zero)); | BOOST_CHECK(mytree.insert(zero)); | ||||
BOOST_CHECK(mytree.insert(one)); | BOOST_CHECK(mytree.insert(one)); | ||||
BOOST_CHECK(mytree.insert(two)); | BOOST_CHECK(mytree.insert(two)); | ||||
BOOST_CHECK(mytree.insert(three)); | BOOST_CHECK(mytree.insert(three)); | ||||
BOOST_CHECK(mytree.remove(keyZero)); | BOOST_CHECK(mytree.remove(keyZero)); | ||||
BOOST_CHECK(mytree.remove(keyOne)); | BOOST_CHECK(mytree.remove(keyOne)); | ||||
BOOST_CHECK(mytree.remove(keyTwo)); | BOOST_CHECK(mytree.remove(keyTwo)); | ||||
BOOST_CHECK(mytree.remove(keyThree)); | BOOST_CHECK(mytree.remove(keyThree)); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyZero), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyZero), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyOne), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyOne), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyTwo), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyTwo), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyThree), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyThree), nullptr); | ||||
// Once the elements are removed, removing them again returns false. | // Once the elements are removed, removing them again returns false. | ||||
BOOST_CHECK(!mytree.remove(keyZero)); | BOOST_CHECK(!mytree.remove(keyZero)); | ||||
BOOST_CHECK(!mytree.remove(keyOne)); | BOOST_CHECK(!mytree.remove(keyOne)); | ||||
BOOST_CHECK(!mytree.remove(keyTwo)); | BOOST_CHECK(!mytree.remove(keyTwo)); | ||||
BOOST_CHECK(!mytree.remove(keyThree)); | BOOST_CHECK(!mytree.remove(keyThree)); | ||||
// Check extreme values. | // Check extreme values. | ||||
Show All 17 Lines | template <typename E> void testRemove() { | ||||
BOOST_CHECK(mytree.remove(keyOne)); | BOOST_CHECK(mytree.remove(keyOne)); | ||||
BOOST_CHECK(mytree.remove(keyTwo)); | BOOST_CHECK(mytree.remove(keyTwo)); | ||||
BOOST_CHECK(mytree.remove(keyThree)); | BOOST_CHECK(mytree.remove(keyThree)); | ||||
BOOST_CHECK(mytree.remove(E::SignedMax())); | BOOST_CHECK(mytree.remove(E::SignedMax())); | ||||
BOOST_CHECK(mytree.remove(E::SignedMin())); | BOOST_CHECK(mytree.remove(E::SignedMin())); | ||||
BOOST_CHECK(mytree.remove(E::MinusOne())); | BOOST_CHECK(mytree.remove(E::MinusOne())); | ||||
BOOST_CHECK(mytree.remove(E::MinusTwo())); | BOOST_CHECK(mytree.remove(E::MinusTwo())); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyZero), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyZero), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyOne), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyOne), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyTwo), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyTwo), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(keyThree), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(keyThree), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(E::SignedMax()), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(E::SignedMax()), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(E::SignedMin()), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(E::SignedMin()), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(E::MinusOne()), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(E::MinusOne()), nullptr); | ||||
BOOST_CHECK_EQUAL(mytree.get(E::MinusTwo()), NULLPTR(E)); | BOOST_CHECK_EQUAL(mytree.get(E::MinusTwo()), nullptr); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(remove_test) { | BOOST_AUTO_TEST_CASE(remove_test) { | ||||
testRemove<TestElementInt<int32_t>>(); | testRemove<TestElementInt<int32_t>>(); | ||||
testRemove<TestElementInt<uint32_t>>(); | testRemove<TestElementInt<uint32_t>>(); | ||||
testRemove<TestElementInt<int64_t>>(); | testRemove<TestElementInt<int64_t>>(); | ||||
testRemove<TestElementInt<uint64_t>>(); | testRemove<TestElementInt<uint64_t>>(); | ||||
▲ Show 20 Lines • Show All 366 Lines • Show Last 20 Lines |