Skip to content

Commit c612fac

Browse files
author
Philip de Nier
committed
add TimeRange.test_extend_to_encompass method
1 parent f94c191 commit c612fac

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

mediatimestamp/immutable.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,6 +1124,10 @@ def union_with_timerange(self, other):
11241124
if not self.is_contiguous_with_timerange(other):
11251125
raise ValueError("Timeranges {} and {} are not contiguous, so cannot take the union.".format(self, other))
11261126

1127+
return self.extend_to_encompass_timerange(other)
1128+
1129+
def extend_to_encompass_timerange(self, other):
1130+
"""Returns the timerange that encompasses this and the other timerange."""
11271131
if self.is_empty():
11281132
return other
11291133

tests/test_immutable.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1519,7 +1519,7 @@ def test_normalise(self):
15191519
msg=("{!r}.normalise({}, {}, rounding={}) == {!r}, expected {!r}"
15201520
.format(tr, rate.numerator, rate.denominator, rounding, result, expected)))
15211521

1522-
def test_union(self):
1522+
def test_extend_to_encompass(self):
15231523
test_data = [
15241524
(TimeRange.from_str("()"), TimeRange.from_str("()"),
15251525
TimeRange.from_str("()")),
@@ -1545,15 +1545,35 @@ def test_union(self):
15451545
TimeRange.from_str("[5:0_15:0)")),
15461546
(TimeRange.from_str("()"), TimeRange.from_str("_15:0)"),
15471547
TimeRange.from_str("_15:0)")),
1548+
1549+
# discontiguous
1550+
(TimeRange.from_str("_0:0)"), TimeRange.from_str("(0:0_"),
1551+
TimeRange.from_str("_")),
1552+
(TimeRange.from_str("(0:0_"), TimeRange.from_str("_0:0)"),
1553+
TimeRange.from_str("_")),
1554+
(TimeRange.from_str("[0:0_5:0)"), TimeRange.from_str("(5:0_15:0)"),
1555+
TimeRange.from_str("[0:0_15:0)")),
1556+
(TimeRange.from_str("(5:0_15:0)"), TimeRange.from_str("[0:0_5:0)"),
1557+
TimeRange.from_str("[0:0_15:0)")),
1558+
(TimeRange.from_str("[0:0_5:0)"), TimeRange.from_str("[10:0_15:0)"),
1559+
TimeRange.from_str("[0:0_15:0)")),
1560+
(TimeRange.from_str("[10:0_15:0)"), TimeRange.from_str("[0:0_5:0)"),
1561+
TimeRange.from_str("[0:0_15:0)")),
15481562
]
15491563

15501564
for (first, second, expected) in test_data:
15511565
with self.subTest(first=first, second=second, expected=expected):
1552-
self.assertEqual(first.union_with_timerange(second), expected)
1566+
self.assertEqual(first.extend_to_encompass_timerange(second), expected)
15531567

1568+
def test_union_raises(self):
1569+
# discontiguous part of test_extend_to_encompass raises for a union
15541570
test_data = [
15551571
(TimeRange.from_str("_0:0)"), TimeRange.from_str("(0:0_")),
1572+
(TimeRange.from_str("(0:0_"), TimeRange.from_str("_0:0)")),
1573+
(TimeRange.from_str("[0:0_5:0)"), TimeRange.from_str("(5:0_15:0)")),
1574+
(TimeRange.from_str("(5:0_15:0)"), TimeRange.from_str("[0:0_5:0)")),
15561575
(TimeRange.from_str("[0:0_5:0)"), TimeRange.from_str("[10:0_15:0)")),
1576+
(TimeRange.from_str("[10:0_15:0)"), TimeRange.from_str("[0:0_5:0)")),
15571577
]
15581578

15591579
for (first, second) in test_data:

0 commit comments

Comments
 (0)