@@ -353,6 +353,35 @@ def test_subrange__negative(self):
353353
354354 self ._check_subrange (a , b , c , d )
355355
356+ def test_subrange__eternity_never (self ):
357+ self .assertTrue (TimeRange .eternity ().contains_subrange (TimeRange .eternity ()))
358+ self .assertTrue (TimeRange .eternity ().contains_subrange (TimeRange .from_str ("[0:0]" )))
359+ self .assertTrue (TimeRange .eternity ().contains_subrange (TimeRange .from_str ("[0:0_1:0)" )))
360+
361+ self .assertTrue (TimeRange .eternity ().contains_subrange (TimeRange .never ()))
362+
363+ self .assertFalse (TimeRange .never ().contains_subrange (TimeRange .eternity ()))
364+ self .assertFalse (TimeRange .never ().contains_subrange (TimeRange .never ()))
365+ self .assertFalse (TimeRange .never ().contains_subrange (TimeRange .from_str ("[0:0]" )))
366+ self .assertFalse (TimeRange .never ().contains_subrange (TimeRange .from_str ("[0:0_1:0)" )))
367+
368+ def test_contains (self ):
369+ self .assertNotIn (None , TimeRange .from_str ("[0:0]" ))
370+ self .assertNotIn (None , TimeRange .never ())
371+ self .assertNotIn (None , TimeRange .eternity ())
372+
373+ self .assertNotIn (1.0 , TimeRange .from_str ("[0:0]" ))
374+ self .assertIn (1.0 , TimeRange .from_str ("[1:0]" ))
375+ self .assertIn (1.0 , TimeRange .from_str ("[0:0_10:0)" ))
376+
377+ self .assertNotIn (Timestamp .from_str ("0:0" ), TimeRange .from_str ("[1:0_10:0)" ))
378+ self .assertIn (Timestamp .from_str ("1:0" ), TimeRange .from_str ("[1:0_10:0)" ))
379+
380+ self .assertNotIn (TimeRange .from_str ("[0:0_10:0)" ), TimeRange .from_str ("[0:0_5:0)" ))
381+ self .assertIn (TimeRange .from_str ("0:0_5:0" ), TimeRange .from_str ("[0:0_10:0)" ))
382+
383+ # The subrange tests will cover the rest
384+
356385 def _check_intersection (self , a , b , c , d ):
357386 self .assertEqual (TimeRange (a , c , TimeRange .INCLUDE_START ).intersect_with (b ), mediatimerange (b ))
358387
@@ -460,6 +489,11 @@ def test_length_negative(self):
460489
461490 self ._check_length (a , b , c )
462491
492+ def test_length_float (self ):
493+ self .assertEqual (TimeRange .eternity ().length , float ("inf" ))
494+ self .assertEqual (float (TimeRange .eternity ().length ), float ("inf" ))
495+ self .assertEqual (float (TimeRange .from_str ("[0:0_1:0)" ).length ), 1.0 )
496+
463497 def test_repr (self ):
464498 """This tests that the repr function turns time ranges into `eval`-able strings."""
465499 test_trs = [
0 commit comments