@@ -1378,6 +1378,33 @@ def test_comparisons(self):
13781378 (False , False , True , False , True , False , True , False , False , True )),
13791379 (TimeRange .from_str ("[0:0_5:0)" ), TimeRange .from_str ("(5:0_10:0)" ),
13801380 (False , False , True , False , True , False , True , False , False , False )),
1381+
1382+ (TimeRange .never (), TimeRange .from_str ("_" ),
1383+ (False , False , False , False , False , False , False , False , True , True )),
1384+ (TimeRange .never (), TimeRange .from_str ("[0:0_" ),
1385+ (False , False , False , False , False , False , False , False , True , True )),
1386+ (TimeRange .never (), TimeRange .from_str ("(0:0_" ),
1387+ (False , False , False , False , False , False , False , False , True , True )),
1388+ (TimeRange .never (), TimeRange .from_str ("[10:0_" ),
1389+ (False , False , False , False , False , False , False , False , True , True )),
1390+ (TimeRange .never (), TimeRange .from_str ("(10:0_" ),
1391+ (False , False , False , False , False , False , False , False , True , True )),
1392+ (TimeRange .never (), TimeRange .from_str ("_0:0]" ),
1393+ (False , False , False , False , False , False , False , False , True , True )),
1394+ (TimeRange .never (), TimeRange .from_str ("_0:0)" ),
1395+ (False , False , False , False , False , False , False , False , True , True )),
1396+ (TimeRange .never (), TimeRange .from_str ("_10:0]" ),
1397+ (False , False , False , False , False , False , False , False , True , True )),
1398+ (TimeRange .never (), TimeRange .from_str ("_10:0)" ),
1399+ (False , False , False , False , False , False , False , False , True , True )),
1400+ (TimeRange .never (), TimeRange .from_str ("[0:0_10:0)" ),
1401+ (False , False , False , False , False , False , False , False , True , True )),
1402+ (TimeRange .never (), TimeRange .from_str ("(0:0_10:0)" ),
1403+ (False , False , False , False , False , False , False , False , True , True )),
1404+ (TimeRange .never (), TimeRange .from_str ("[5:0_10:0)" ),
1405+ (False , False , False , False , False , False , False , False , True , True )),
1406+ (TimeRange .never (), TimeRange .from_str ("(5:0_10:0)" ),
1407+ (False , False , False , False , False , False , False , False , True , True )),
13811408 ]
13821409 functions = ("starts_inside_timerange" ,
13831410 "ends_inside_timerange" ,
@@ -1503,3 +1530,45 @@ def test_normalise(self):
15031530 self .assertEqual (result , expected ,
15041531 msg = ("{!r}.normalise({}, {}, rounding={}) == {!r}, expected {!r}"
15051532 .format (tr , rate .numerator , rate .denominator , rounding , result , expected )))
1533+
1534+ def test_union (self ):
1535+ test_data = [
1536+ (TimeRange .from_str ("()" ), TimeRange .from_str ("()" ),
1537+ TimeRange .from_str ("()" )),
1538+ (TimeRange .from_str ("[0:0_10:0)" ), TimeRange .from_str ("[10:0]" ),
1539+ TimeRange .from_str ("[0:0_10:0]" )),
1540+ (TimeRange .from_str ("_" ), TimeRange .from_str ("[0:0]" ),
1541+ TimeRange .from_str ("_" )),
1542+ (TimeRange .from_str ("_" ), TimeRange .from_str ("()" ),
1543+ TimeRange .from_str ("_" )),
1544+ (TimeRange .from_str ("()" ), TimeRange .from_str ("_" ),
1545+ TimeRange .from_str ("_" )),
1546+ (TimeRange .from_str ("_10:0)" ), TimeRange .from_str ("[0:0_" ),
1547+ TimeRange .from_str ("_" )),
1548+ (TimeRange .from_str ("[0:0_10:0)" ), TimeRange .from_str ("[5:0_" ),
1549+ TimeRange .from_str ("[0:0_" )),
1550+ (TimeRange .from_str ("[0:0_10:0)" ), TimeRange .from_str ("[5:0_15:0)" ),
1551+ TimeRange .from_str ("[0:0_15:0)" )),
1552+ (TimeRange .from_str ("[0:0_10:0)" ), TimeRange .from_str ("[10:0_15:0)" ),
1553+ TimeRange .from_str ("[0:0_15:0)" )),
1554+ (TimeRange .from_str ("()" ), TimeRange .from_str ("[5:0_" ),
1555+ TimeRange .from_str ("[5:0_" )),
1556+ (TimeRange .from_str ("()" ), TimeRange .from_str ("[5:0_15:0)" ),
1557+ TimeRange .from_str ("[5:0_15:0)" )),
1558+ (TimeRange .from_str ("()" ), TimeRange .from_str ("_15:0)" ),
1559+ TimeRange .from_str ("_15:0)" )),
1560+ ]
1561+
1562+ for (first , second , expected ) in test_data :
1563+ with self .subTest (first = first , second = second , expected = expected ):
1564+ self .assertEqual (first .union_with_timerange (second ), expected )
1565+
1566+ test_data = [
1567+ (TimeRange .from_str ("_0:0)" ), TimeRange .from_str ("(0:0_" )),
1568+ (TimeRange .from_str ("[0:0_5:0)" ), TimeRange .from_str ("[10:0_15:0)" )),
1569+ ]
1570+
1571+ for (first , second ) in test_data :
1572+ with self .subTest (first = first , second = second ):
1573+ with self .assertRaises (ValueError ):
1574+ first .union_with_timerange (second )
0 commit comments