@@ -34,14 +34,33 @@ def test_durations_is_tuple(self) -> None:
3434 result = make_result ((0.1 , 0.2 , 0.3 ))
3535 assert isinstance (result .durations , tuple )
3636
37+ def test_empty_durations_raises (self ) -> None :
38+ # BenchmarkResult does not validate durations length;
39+ # creating with empty tuple causes ZeroDivisionError in __post_init__
40+ s = Scenario (lambda : None , name = 's' , number = 1 )
41+ with pytest .raises ((ZeroDivisionError , ValueError )):
42+ BenchmarkResult (scenario = s , durations = (), is_primary = True )
43+
44+ def test_inf_durations_fields (self ) -> None :
45+ result = make_result ((float ('inf' ), 1.0 , 2.0 ))
46+ assert math .isinf (result .worst )
47+ assert math .isinf (result .mean )
48+ assert result .best == 1.0
49+
50+ def test_nan_durations_fields (self ) -> None :
51+ result = make_result ((float ('nan' ),))
52+ assert math .isnan (result .mean )
53+ assert math .isnan (result .best )
54+ assert math .isnan (result .worst )
55+
3756 def test_mean_computed_correctly (self ) -> None :
3857 result = make_result ((1.0 , 2.0 , 3.0 ))
3958 expected = math .fsum ([1.0 , 2.0 , 3.0 ]) / 3
4059 assert result .mean == expected
4160
4261 def test_mean_uses_fsum_precision (self ) -> None :
43- # fsum handles cancellation correctly; plain sum loses precision:
44- # sum([ 1e20, 1.0, -1e20]) == 0 .0, fsum == 1.0
62+ # fsum handles cancellation correctly; plain sum loses precision
63+ # for ( 1e20, 1.0, -1e20): fsum=1 .0, sum=0.0 due to IEEE 754
4564 durations = (1e20 , 1.0 , - 1e20 )
4665 result = make_result (durations )
4766 assert result .mean == pytest .approx (1.0 / 3 )
@@ -337,6 +356,12 @@ def test_percentile_single_element(self) -> None:
337356 assert trimmed .durations == (5.0 ,)
338357 assert trimmed .is_primary is False
339358
359+ def test_percentile_100_single_element (self ) -> None :
360+ result = make_result ((5.0 ,))
361+ trimmed = result .percentile (100 )
362+ assert trimmed .durations == (5.0 ,)
363+ assert trimmed .is_primary is False
364+
340365 def test_from_json_missing_is_primary_raises (self ) -> None :
341366 payload = json .dumps ({'durations' : [0.1 , 0.2 ]})
342367 with pytest .raises (ValueError , match = 'required fields' ):
0 commit comments