interval contains

This commit is contained in:
rjawor 2018-12-12 21:45:07 +01:00
parent 4258caf522
commit 2eda92fe7a
3 changed files with 43 additions and 0 deletions

View File

@ -15,6 +15,10 @@ bool Interval::intersects(Interval & interval) {
interval.getEnd() - 1 < _start); interval.getEnd() - 1 < _start);
} }
bool Interval::contains(Interval & interval) {
return (_start <= interval.getStart() && _end >= interval.getEnd());
}
SUFFIX_MARKER_TYPE Interval::getLength() { SUFFIX_MARKER_TYPE Interval::getLength() {
return _end - _start; return _end - _start;
} }

View File

@ -32,6 +32,12 @@ public:
*/ */
bool intersects(Interval & interval); bool intersects(Interval & interval);
/*! Checks if this interval contains another.
\param interval another interval
\returns true if this interval contains the other
*/
bool contains(Interval & interval);
/*! Getter for interval length. /*! Getter for interval length.
\returns end - start \returns end - start
*/ */

View File

@ -68,4 +68,37 @@ BOOST_AUTO_TEST_CASE( IntervalIntersects8 )
BOOST_CHECK(!interval2.intersects(interval1)); BOOST_CHECK(!interval2.intersects(interval1));
} }
BOOST_AUTO_TEST_CASE( IntervalContains1 )
{
Interval interval1(2,9);
Interval interval2(3,7);
BOOST_CHECK(interval1.contains(interval2));
BOOST_CHECK(!interval2.contains(interval1));
}
BOOST_AUTO_TEST_CASE( IntervalContains2 )
{
Interval interval1(3,9);
Interval interval2(3,7);
BOOST_CHECK(interval1.contains(interval2));
BOOST_CHECK(!interval2.contains(interval1));
}
BOOST_AUTO_TEST_CASE( IntervalContains3 )
{
Interval interval1(4,9);
Interval interval2(3,7);
BOOST_CHECK(!interval1.contains(interval2));
BOOST_CHECK(!interval2.contains(interval1));
}
BOOST_AUTO_TEST_CASE( IntervalContains4 )
{
Interval interval1(2,9);
Interval interval2(3,17);
BOOST_CHECK(!interval1.contains(interval2));
BOOST_CHECK(!interval2.contains(interval1));
}
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()