Skip to content

Commit 3597846

Browse files
authored
Merge pull request #64 from 5cript/fix/dynamic-interval-distance-missing-return
Fix/dynamic interval distance missing return
2 parents 133919e + 5c9f5e9 commit 3597846

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

‎include/interval-tree/interval_tree.hpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ namespace lib_interval_tree
347347
*/
348348
value_type operator-(interval const& other) const
349349
{
350-
interval_kind::distance(*this, other);
350+
return interval_kind::distance(*this, other);
351351
}
352352

353353
/**

‎tests/interval_tests.hpp‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,27 @@ TEST_F(DistanceTests, DistanceAdjacent2)
549549
EXPECT_EQ(base5 - other5, 0);
550550
}
551551

552+
TEST_F(DistanceTests, DynamicDistance)
553+
{
554+
constexpr auto c = interval_border::closed;
555+
constexpr auto ca = interval_border::closed_adjacent;
556+
557+
// Regression: interval<T, dynamic>::operator- used to drop its return statement.
558+
EXPECT_EQ(i<dynamic>(1, 5, c, c) - i<dynamic>(7, 9, c, c), 2);
559+
560+
// right side:
561+
EXPECT_EQ(i<dynamic>(5, 10, c, c) - i<dynamic>(15, 18, c, c), 5);
562+
563+
// left side:
564+
EXPECT_EQ(i<dynamic>(5, 10, c, c) - i<dynamic>(0, 1, c, c), 4);
565+
566+
// overlapping and adjacent intervals have no distance:
567+
EXPECT_EQ(i<dynamic>(-35, 96, c, c) - i<dynamic>(-20, 600, c, c), 0);
568+
EXPECT_EQ(i<dynamic>(5, 10, c, c) - i<dynamic>(10, 18, c, c), 0);
569+
EXPECT_EQ(i<dynamic>(5, 10, c, c) - i<dynamic>(0, 5, c, c), 0);
570+
EXPECT_EQ(i<dynamic>(0, 5, c, ca) - i<dynamic>(6, 10, ca, c), 0);
571+
}
572+
552573
TEST_F(OverlapTests, DynamicOverlapContainedCompletely)
553574
{
554575
auto containment = i<dynamic>(-100, 100, interval_border::closed, interval_border::closed);

0 commit comments

Comments
 (0)