@@ -312,6 +312,34 @@ def assertEqualAndEqualSign(self, a, b):
312312 # distinguishes -0.0 and 0.0.
313313 self .assertEqual ((a , copysign (1.0 , a )), (b , copysign (1.0 , b )))
314314
315+ def test_float_floor (self ):
316+ self .assertIsInstance (float (0.5 ).__floor__ (), int )
317+ self .assertEqual (float (0.5 ).__floor__ (), 0 )
318+ self .assertEqual (float (1.0 ).__floor__ (), 1 )
319+ self .assertEqual (float (1.5 ).__floor__ (), 1 )
320+ self .assertEqual (float (- 0.5 ).__floor__ (), - 1 )
321+ self .assertEqual (float (- 1.0 ).__floor__ (), - 1 )
322+ self .assertEqual (float (- 1.5 ).__floor__ (), - 2 )
323+ self .assertEqual (float (1.23e167 ).__floor__ (), 1.23e167 )
324+ self .assertEqual (float (- 1.23e167 ).__floor__ (), - 1.23e167 )
325+ self .assertRaises (ValueError , float ("nan" ).__floor__ )
326+ self .assertRaises (OverflowError , float ("inf" ).__floor__ )
327+ self .assertRaises (OverflowError , float ("-inf" ).__floor__ )
328+
329+ def test_float_ceil (self ):
330+ self .assertIsInstance (float (0.5 ).__ceil__ (), int )
331+ self .assertEqual (float (0.5 ).__ceil__ (), 1 )
332+ self .assertEqual (float (1.0 ).__ceil__ (), 1 )
333+ self .assertEqual (float (1.5 ).__ceil__ (), 2 )
334+ self .assertEqual (float (- 0.5 ).__ceil__ (), 0 )
335+ self .assertEqual (float (- 1.0 ).__ceil__ (), - 1 )
336+ self .assertEqual (float (- 1.5 ).__ceil__ (), - 1 )
337+ self .assertEqual (float (1.23e167 ).__ceil__ (), 1.23e167 )
338+ self .assertEqual (float (- 1.23e167 ).__ceil__ (), - 1.23e167 )
339+ self .assertRaises (ValueError , float ("nan" ).__ceil__ )
340+ self .assertRaises (OverflowError , float ("inf" ).__ceil__ )
341+ self .assertRaises (OverflowError , float ("-inf" ).__ceil__ )
342+
315343 @support .requires_IEEE_754
316344 def test_float_mod (self ):
317345 # Check behaviour of % operator for IEEE 754 special cases.
0 commit comments