1111
1212if is_cli :
1313 from System import Int64 , Byte , Int16
14+ else :
15+ long = type (sys .maxsize + 1 )
1416
1517class MathTest (IronPythonTestCase ):
1618
@@ -310,104 +312,101 @@ def assertEqualAndCheckType(self, actual, expected, expectedType):
310312 self .assertIsInstance (actual , expectedType , msg = "Type: {0}" .format (type (actual )))
311313
312314 def test_rounding (self ):
313- self .assertTrue (round (- 5.5489 ) == ( - 6 ) )
314- self .assertTrue (round (5.5519 ) == ( 6 ) )
315- self .assertTrue (round (- 5.5 ) == ( - 6 ) )
316- self .assertTrue (round (- 5.0 ) == ( - 5 ) )
317-
318- self .assertTrue (round (- 4.5 ) == ( - 4 ) )
319- self .assertTrue (round (- 2.5 ) == ( - 2 ) )
320- self .assertTrue (round (- 0.5 ) == ( - 0 ) )
321- self .assertTrue (round (0.5 ) == ( 0 ) )
322- self .assertTrue (round (2.5 ) == ( 2 ) )
323- self .assertTrue (round (4.5 ) == ( 4 ) )
324-
325- self .assertTrue (round (- 4.0 ) == ( - 4 ) )
326- self .assertTrue (round (- 3.5 ) == ( - 4 ) )
327- self .assertTrue (round (- 3.0 ) == ( - 3 ) )
328- self .assertTrue (round (- 2.0 ) == ( - 2 ) )
329- self .assertTrue (round (- 1.5 ) == ( - 2 ) )
330- self .assertTrue (round (- 1.0 ) == ( - 1 ) )
331- self .assertTrue (round (0.0 ) == ( 0 ) )
332- self .assertTrue (round (1.0 ) == ( 1 ) )
333- self .assertTrue (round (1.5 ) == ( 2 ) )
334- self .assertTrue (round (2.0 ) == ( 2 ) )
335- self .assertTrue (round (3.0 ) == ( 3 ) )
336- self .assertTrue (round (3.5 ) == ( 4 ) )
337- self .assertTrue (round (4.0 ) == ( 4 ) )
338- self .assertTrue (round (5.0 ) == ( 5 ) )
315+ self .assertEqual (round (- 5.5489 ), - 6 )
316+ self .assertEqual (round (5.5519 ), 6 )
317+ self .assertEqual (round (- 5.5 ), - 6 )
318+ self .assertEqual (round (- 5.0 ), - 5 )
319+
320+ self .assertEqual (round (- 4.5 ), - 4 )
321+ self .assertEqual (round (- 2.5 ), - 2 )
322+ self .assertEqual (round (- 0.5 ), - 0 )
323+ self .assertEqual (round (0.5 ), 0 )
324+ self .assertEqual (round (2.5 ), 2 )
325+ self .assertEqual (round (4.5 ), 4 )
326+
327+ self .assertEqual (round (- 4.0 ), - 4 )
328+ self .assertEqual (round (- 3.5 ), - 4 )
329+ self .assertEqual (round (- 3.0 ), - 3 )
330+ self .assertEqual (round (- 2.0 ), - 2 )
331+ self .assertEqual (round (- 1.5 ), - 2 )
332+ self .assertEqual (round (- 1.0 ), - 1 )
333+ self .assertEqual (round (0.0 ), 0 )
334+ self .assertEqual (round (1.0 ), 1 )
335+ self .assertEqual (round (1.5 ), 2 )
336+ self .assertEqual (round (2.0 ), 2 )
337+ self .assertEqual (round (3.0 ), 3 )
338+ self .assertEqual (round (3.5 ), 4 )
339+ self .assertEqual (round (4.0 ), 4 )
340+ self .assertEqual (round (5.0 ), 5 )
339341
340342 # two parameter round overload
341- self .assertTrue (round (- 4.0 , 0 ) == ( - 4.0 ) )
342- self .assertTrue (round (- 3.5 , 0 ) == ( - 4.0 ) )
343- self .assertTrue (round (- 3.0 , 0 ) == ( - 3.0 ) )
344- self .assertTrue (round (- 2.0 , 0 ) == ( - 2.0 ) )
345- self .assertTrue (round (- 1.5 , 0 ) == ( - 2.0 ) )
346- self .assertTrue (round (- 1.0 , 0 ) == ( - 1.0 ) )
347- self .assertTrue (round (0.0 , 0 ) == ( 0.0 ) )
348- self .assertTrue (round (1.0 , 0 ) == ( 1.0 ) )
349- self .assertTrue (round (1.5 , 0 ) == ( 2.0 ) )
350- self .assertTrue (round (2.0 , 0 ) == ( 2.0 ) )
351- self .assertTrue (round (3.0 , 0 ) == ( 3.0 ) )
352- self .assertTrue (round (3.5 , 0 ) == ( 4.0 ) )
353- self .assertTrue (round (4.0 , 0 ) == ( 4.0 ) )
354- self .assertTrue (round (5.0 , 0 ) == ( 5.0 ) )
355- self .assertTrue (round (123.41526375 , 1 ) == 123.4 )
356- self .assertTrue (round (123.41526375 , 2 ) == 123.42 )
357- self .assertTrue (round (123.41526375 , 3 ) == 123.415 )
358- self .assertTrue (round (123.41526375 , 4 ) == 123.4153 )
359- self .assertTrue (round (123.41526375 , 5 ) == 123.41526 )
360- self .assertTrue (round (123.41526375 , 6 ) == 123.415264 )
361- if not is_cli : # https://github.com/IronLanguages/main/issues/856
362- self .assertTrue (round (123.41526375 , 7 ) == 123.4152637 )
343+ self .assertEqual (round (- 4.0 , 0 ), - 4.0 )
344+ self .assertEqual (round (- 3.5 , 0 ), - 4.0 )
345+ self .assertEqual (round (- 3.0 , 0 ), - 3.0 )
346+ self .assertEqual (round (- 2.0 , 0 ), - 2.0 )
347+ self .assertEqual (round (- 1.5 , 0 ), - 2.0 )
348+ self .assertEqual (round (- 1.0 , 0 ), - 1.0 )
349+ self .assertEqual (round (0.0 , 0 ), 0.0 )
350+ self .assertEqual (round (1.0 , 0 ), 1.0 )
351+ self .assertEqual (round (1.5 , 0 ), 2.0 )
352+ self .assertEqual (round (2.0 , 0 ), 2.0 )
353+ self .assertEqual (round (3.0 , 0 ), 3.0 )
354+ self .assertEqual (round (3.5 , 0 ), 4.0 )
355+ self .assertEqual (round (4.0 , 0 ), 4.0 )
356+ self .assertEqual (round (5.0 , 0 ), 5.0 )
357+ self .assertEqual (round (123.41526375 , 1 ), 123.4 )
358+ self .assertEqual (round (123.41526375 , 2 ), 123.42 )
359+ self .assertEqual (round (123.41526375 , 3 ), 123.415 )
360+ self .assertEqual (round (123.41526375 , 4 ), 123.4153 )
361+ self .assertEqual (round (123.41526375 , 5 ), 123.41526 )
362+ self .assertEqual (round (123.41526375 , 6 ), 123.415264 )
363+ if is_cli : # https://github.com/IronLanguages/main/issues/856
364+ self .assertEqual (round (123.41526375 , 7 ), 123.4152638 )
363365 else :
364- self .assertTrue (round (123.41526375 , 7 ) == 123.4152638 )
365- self .assertTrue (round (- 123.41526375 , 1 ) == - 123.4 )
366- self .assertTrue (round (- 123.41526375 , 2 ) == - 123.42 )
367- self .assertTrue (round (- 123.41526375 , 3 ) == - 123.415 )
368- self .assertTrue (round (- 123.41526375 , 4 ) == - 123.4153 )
369- self .assertTrue (round (- 123.41526375 , 5 ) == - 123.41526 )
370- self .assertTrue (round (- 123.41526375 , 6 ) == - 123.415264 )
371- if not is_cli : # https://github.com/IronLanguages/main/issues/856
372- self .assertTrue (round (- 123.41526375 , 7 ) == - 123.4152637 )
366+ self .assertEqual (round (123.41526375 , 7 ), 123.4152637 )
367+ self .assertEqual (round (- 123.41526375 , 1 ), - 123.4 )
368+ self .assertEqual (round (- 123.41526375 , 2 ), - 123.42 )
369+ self .assertEqual (round (- 123.41526375 , 3 ), - 123.415 )
370+ self .assertEqual (round (- 123.41526375 , 4 ), - 123.4153 )
371+ self .assertEqual (round (- 123.41526375 , 5 ), - 123.41526 )
372+ self .assertEqual (round (- 123.41526375 , 6 ), - 123.415264 )
373+ if is_cli : # https://github.com/IronLanguages/main/issues/856
374+ self .assertEqual (round (- 123.41526375 , 7 ), - 123.4152638 )
373375 else :
374- self .assertTrue (round (- 123.41526375 , 7 ) == - 123.4152638 )
376+ self .assertEqual (round (- 123.41526375 , 7 ), - 123.4152637 )
375377 for i in range (8 , 307 ):
376- # Note: We can't do exact equality here due to the inexact nature of IEEE
377- # double precision floats when multiplied and later divided by huge powers of 10.
378- # Neither CPython nor IronPython mantain exact equality for precisions >= 17
379- if i < 17 :
380- self .assertTrue (round (123.41526375 , i ) == 123.41526375 )
381- self .assertTrue (round (- 123.41526375 , i ) == - 123.41526375 )
378+ if is_cli and i >= 17 : # https://github.com/IronLanguages/ironpython2/issues/517
379+ self .assertAlmostEqual (round (123.41526375 , i ), 123.41526375 , 10 )
380+ self .assertAlmostEqual (round (- 123.41526375 , i ), - 123.41526375 , 10 )
382381 else :
383- self .assertTrue ( abs ( round (123.41526375 , i ) - 123.41526375 ) < 0.0000000001 )
384- self .assertTrue ( abs ( round (- 123.41526375 , i ) - - 123.41526375 ) < 0.0000000001 )
385-
386- self .assertTrue (round (7182930456.0 , - 1 ) == 7182930460.0 )
387- self .assertTrue (round (7182930456.0 , - 2 ) == 7182930500.0 )
388- self .assertTrue (round (7182930456.0 , - 3 ) == 7182930000.0 )
389- self .assertTrue (round (7182930456.0 , - 4 ) == 7182930000.0 )
390- self .assertTrue (round (7182930456.0 , - 5 ) == 7182900000.0 )
391- self .assertTrue (round (7182930456.0 , - 6 ) == 7183000000.0 )
392- self .assertTrue (round (7182930456.0 , - 7 ) == 7180000000.0 )
393- self .assertTrue (round (7182930456.0 , - 8 ) == 7200000000.0 )
394- self .assertTrue (round (7182930456.0 , - 9 ) == 7000000000.0 )
395- self .assertTrue (round (7182930456.0 , - 10 ) == 10000000000.0 )
396- self .assertTrue (round (7182930456.0 , - 11 ) == 0.0 )
397- self .assertTrue (round (- 7182930456.0 , - 1 ) == - 7182930460.0 )
398- self .assertTrue (round (- 7182930456.0 , - 2 ) == - 7182930500.0 )
399- self .assertTrue (round (- 7182930456.0 , - 3 ) == - 7182930000.0 )
400- self .assertTrue (round (- 7182930456.0 , - 4 ) == - 7182930000.0 )
401- self .assertTrue (round (- 7182930456.0 , - 5 ) == - 7182900000.0 )
402- self .assertTrue (round (- 7182930456.0 , - 6 ) == - 7183000000.0 )
403- self .assertTrue (round (- 7182930456.0 , - 7 ) == - 7180000000.0 )
404- self .assertTrue (round (- 7182930456.0 , - 8 ) == - 7200000000.0 )
405- self .assertTrue (round (- 7182930456.0 , - 9 ) == - 7000000000.0 )
406- self .assertTrue (round (- 7182930456.0 , - 10 ) == - 10000000000.0 )
407- self .assertTrue (round (- 7182930456.0 , - 11 ) == 0.0 )
382+ self .assertEqual ( round (123.41526375 , i ), 123.41526375 )
383+ self .assertEqual ( round (- 123.41526375 , i ), - 123.41526375 )
384+
385+ self .assertEqual (round (7182930456.0 , - 1 ), 7182930460.0 )
386+ self .assertEqual (round (7182930456.0 , - 2 ), 7182930500.0 )
387+ self .assertEqual (round (7182930456.0 , - 3 ), 7182930000.0 )
388+ self .assertEqual (round (7182930456.0 , - 4 ), 7182930000.0 )
389+ self .assertEqual (round (7182930456.0 , - 5 ), 7182900000.0 )
390+ self .assertEqual (round (7182930456.0 , - 6 ), 7183000000.0 )
391+ self .assertEqual (round (7182930456.0 , - 7 ), 7180000000.0 )
392+ self .assertEqual (round (7182930456.0 , - 8 ), 7200000000.0 )
393+ self .assertEqual (round (7182930456.0 , - 9 ), 7000000000.0 )
394+ self .assertEqual (round (7182930456.0 , - 10 ), 10000000000.0 )
395+ self .assertEqual (round (7182930456.0 , - 11 ), 0.0 )
396+ self .assertEqual (round (- 7182930456.0 , - 1 ), - 7182930460.0 )
397+ self .assertEqual (round (- 7182930456.0 , - 2 ), - 7182930500.0 )
398+ self .assertEqual (round (- 7182930456.0 , - 3 ), - 7182930000.0 )
399+ self .assertEqual (round (- 7182930456.0 , - 4 ), - 7182930000.0 )
400+ self .assertEqual (round (- 7182930456.0 , - 5 ), - 7182900000.0 )
401+ self .assertEqual (round (- 7182930456.0 , - 6 ), - 7183000000.0 )
402+ self .assertEqual (round (- 7182930456.0 , - 7 ), - 7180000000.0 )
403+ self .assertEqual (round (- 7182930456.0 , - 8 ), - 7200000000.0 )
404+ self .assertEqual (round (- 7182930456.0 , - 9 ), - 7000000000.0 )
405+ self .assertEqual (round (- 7182930456.0 , - 10 ), - 10000000000.0 )
406+ self .assertEqual (round (- 7182930456.0 , - 11 ), 0.0 )
408407 for i in range (- 12 , - 309 , - 1 ):
409- self .assertTrue (round (7182930456.0 , i ) == 0.0 )
410- self .assertTrue (round (- 7182930456.0 , i ) == 0.0 )
408+ self .assertEqual (round (7182930456.0 , i ), 0.0 )
409+ self .assertEqual (round (- 7182930456.0 , i ), 0.0 )
411410
412411 self .assertEqualAndCheckType ((2.4 ).__round__ (), 2 , int )
413412 self .assertEqualAndCheckType ((2.5 ).__round__ (), 2 , int )
@@ -423,7 +422,10 @@ def test_rounding(self):
423422 self .assertEqualAndCheckType (round (- 2.1123E25 ), - 21122999999999999263899648 , long )
424423
425424 self .assertEqualAndCheckType ((2.54 ).__round__ (1 ), 2.5 , float )
426- self .assertEqualAndCheckType ((2.55 ).__round__ (1 ), 2.6 , float )
425+ if is_cli : # https://github.com/IronLanguages/ironpython2/issues/517
426+ self .assertEqualAndCheckType ((2.55 ).__round__ (1 ), 2.6 , float )
427+ else :
428+ self .assertEqualAndCheckType ((2.55 ).__round__ (1 ), 2.5 , float )
427429 self .assertEqualAndCheckType ((2.56 ).__round__ (1 ), 2.6 , float )
428430 self .assertEqualAndCheckType ((24.0 ).__round__ (- 1 ), 20.0 , float )
429431 self .assertEqualAndCheckType ((25.0 ).__round__ (- 1 ), 20.0 , float )
0 commit comments