def test_unoverlapping(self): interval_1 = Interval(1, 3) # (1, 3) interval_2 = Interval(4, 5) # (4, 5) difference = Interval.difference(interval_1, interval_2) # (1, 3) self.assertEqual(difference.start, 1) self.assertEqual(difference.end, 3) self.assertFalse(difference.is_start_inclusive) self.assertFalse(difference.is_end_inclusive)
def test_right_touch(self): interval_1 = Interval(0, 1, True, True) # [0, 1] interval_2 = Interval(1, 3, is_start_inclusive=True) # [1, 3) difference = Interval.difference(interval_1, interval_2) # [0, 1) self.assertEqual(len(difference.intervals), 1) self.assertEqual(difference.intervals[0].start, 0) self.assertEqual(difference.intervals[0].end, 1) self.assertTrue(difference.intervals[0].is_start_inclusive) self.assertFalse(difference.intervals[0].is_end_inclusive)
def test_right_overlap(self): interval_1 = Interval(0, 2) # (0, 2) interval_2 = Interval(1, 3) # (1, 3) difference = Interval.difference(interval_1, interval_2) # (0, 1] self.assertEqual(len(difference.intervals), 1) self.assertEqual(difference.intervals[0].start, 0) self.assertEqual(difference.intervals[0].end, 1) self.assertFalse(difference.intervals[0].is_start_inclusive) self.assertTrue(difference.intervals[0].is_end_inclusive)
def test_split(self): interval_1 = Interval(0, 4, True, True) # [0, 4] interval_2 = Interval(2, 3, is_start_inclusive=True) # [2, 3) difference = Interval.difference(interval_1, interval_2) # [0, 2) + [3, 4] self.assertEqual(len(difference.intervals), 2) self.assertEqual(difference.intervals[0].start, 0) self.assertEqual(difference.intervals[0].end, 2) self.assertTrue(difference.intervals[0].is_start_inclusive) self.assertFalse(difference.intervals[0].is_end_inclusive) self.assertEqual(difference.intervals[1].start, 3) self.assertEqual(difference.intervals[1].end, 4) self.assertTrue(difference.intervals[1].is_start_inclusive) self.assertTrue(difference.intervals[1].is_end_inclusive)