@@ -828,4 +828,75 @@ TEST_F(IntervalTests, DynamicJoinTest)
828
828
.join (i<dynamic>(3 , 4 , interval_border::closed, interval_border::closed_adjacent)),
829
829
i<dynamic>(0 , 4 , interval_border::closed, interval_border::closed_adjacent)
830
830
);
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);
831
902
}
0 commit comments