Skip to content

Commit aa02e46

Browse files
committed
Added some more tests for dynamic interval in tree.
1 parent 9f9bad2 commit aa02e46

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

tests/interval_tests.hpp

+71
Original file line numberDiff line numberDiff line change
@@ -828,4 +828,75 @@ TEST_F(IntervalTests, DynamicJoinTest)
828828
.join(i<dynamic>(3, 4, interval_border::closed, interval_border::closed_adjacent)),
829829
i<dynamic>(0, 4, interval_border::closed, interval_border::closed_adjacent)
830830
);
831+
}
832+
833+
TEST_F(IntervalTests, CanInsertDynamicIntervalIntoTree)
834+
{
835+
interval_tree<interval<int, dynamic>> dynamic_interval_tree;
836+
auto iter = dynamic_interval_tree.insert(i<dynamic>(0, 5, interval_border::closed, interval_border::closed));
837+
EXPECT_EQ(iter->low(), 0);
838+
EXPECT_EQ(iter->high(), 5);
839+
EXPECT_EQ(iter->left_border(), interval_border::closed);
840+
EXPECT_EQ(iter->right_border(), interval_border::closed);
841+
EXPECT_EQ(dynamic_interval_tree.begin(), iter);
842+
}
843+
844+
TEST_F(IntervalTests, CanFindDynamicIntervalInTree)
845+
{
846+
interval_tree<interval<int, dynamic>> dynamic_interval_tree;
847+
dynamic_interval_tree.insert(i<dynamic>(0, 5, interval_border::closed, interval_border::closed));
848+
auto iter = dynamic_interval_tree.find(i<dynamic>(0, 5, interval_border::closed, interval_border::closed));
849+
EXPECT_EQ(iter->low(), 0);
850+
EXPECT_EQ(iter->high(), 5);
851+
EXPECT_EQ(iter->left_border(), interval_border::closed);
852+
EXPECT_EQ(iter->right_border(), interval_border::closed);
853+
}
854+
855+
TEST_F(IntervalTests, CanEraseDynamicIntervalFromTree)
856+
{
857+
interval_tree<interval<int, dynamic>> dynamic_interval_tree;
858+
dynamic_interval_tree.insert(i<dynamic>(0, 5, interval_border::closed, interval_border::closed));
859+
dynamic_interval_tree.erase(dynamic_interval_tree.begin());
860+
EXPECT_TRUE(dynamic_interval_tree.empty());
861+
}
862+
863+
TEST_F(IntervalTests, CanOverlapFindDynamicIntervalInTree)
864+
{
865+
interval_tree<interval<int, dynamic>> dynamic_interval_tree;
866+
dynamic_interval_tree.insert(i<dynamic>(0, 5, interval_border::closed, interval_border::closed));
867+
auto iter =
868+
dynamic_interval_tree.overlap_find(i<dynamic>(3, 7, interval_border::open, interval_border::closed_adjacent));
869+
EXPECT_EQ(iter->low(), 0);
870+
EXPECT_EQ(iter->high(), 5);
871+
EXPECT_EQ(iter->left_border(), interval_border::closed);
872+
EXPECT_EQ(iter->right_border(), interval_border::closed);
873+
}
874+
875+
TEST_F(IntervalTests, CanInsertOverlappingDynamicIntervalIntoTree)
876+
{
877+
interval_tree<interval<int, dynamic>> dynamic_interval_tree;
878+
dynamic_interval_tree.insert(i<dynamic>(0, 5, interval_border::closed, interval_border::closed));
879+
dynamic_interval_tree.insert_overlap(i<dynamic>(3, 7, interval_border::open, interval_border::closed_adjacent));
880+
auto iter = dynamic_interval_tree.find(i<dynamic>(0, 7, interval_border::closed, interval_border::closed_adjacent));
881+
EXPECT_EQ(iter->low(), 0);
882+
EXPECT_EQ(iter->high(), 7);
883+
EXPECT_EQ(iter->left_border(), interval_border::closed);
884+
EXPECT_EQ(iter->right_border(), interval_border::closed_adjacent);
885+
}
886+
887+
TEST_F(IntervalTests, CanFindDynamicIntervalUsingComparisonFunction)
888+
{
889+
interval_tree<interval<int, dynamic>> dynamic_interval_tree;
890+
dynamic_interval_tree.insert(i<dynamic>(0, 5, interval_border::closed, interval_border::closed));
891+
auto iter = dynamic_interval_tree.find(
892+
i<dynamic>(0, 5, interval_border::open, interval_border::open),
893+
// ignore border types:
894+
[](const auto& a, const auto& b) {
895+
return a.low() == b.low() && a.high() == b.high();
896+
}
897+
);
898+
EXPECT_EQ(iter->low(), 0);
899+
EXPECT_EQ(iter->high(), 5);
900+
EXPECT_EQ(iter->left_border(), interval_border::closed);
901+
EXPECT_EQ(iter->right_border(), interval_border::closed);
831902
}

0 commit comments

Comments
 (0)