diff babel/tests/numbers.py @ 557:4e561e6411ba trunk

Only use bankers round algorithm as a tie breaker if there are two nearest numbers, round as usual if there is only one nearest number (#267, patch by Martin)
author fschwarz
date Tue, 30 Aug 2011 20:53:33 +0000
parents aa53048ad7ac
children e77dd06c40ef
line wrap: on
line diff
--- a/babel/tests/numbers.py
+++ b/babel/tests/numbers.py
@@ -12,7 +12,6 @@
 # history and logs, available at http://babel.edgewall.org/log/.
 
 from decimal import Decimal
-
 import doctest
 import unittest
 
@@ -137,10 +136,24 @@
         self.assertEqual(fmt, '0E0')
 
 
+class BankersRoundTestCase(unittest.TestCase):
+    def test_round_to_nearest_integer(self):
+        self.assertEqual(1, numbers.bankersround(Decimal('0.5001')))
+    
+    def test_round_to_even_for_two_nearest_integers(self):
+        self.assertEqual(0, numbers.bankersround(Decimal('0.5')))
+        self.assertEqual(2, numbers.bankersround(Decimal('1.5')))
+        self.assertEqual(-2, numbers.bankersround(Decimal('-2.5')))
+
+        self.assertEqual(0, numbers.bankersround(Decimal('0.05'), ndigits=1))
+        self.assertEqual(Decimal('0.2'), numbers.bankersround(Decimal('0.15'), ndigits=1))
+
+
 def suite():
     suite = unittest.TestSuite()
     suite.addTest(doctest.DocTestSuite(numbers))
     suite.addTest(unittest.makeSuite(FormatDecimalTestCase))
+    suite.addTest(unittest.makeSuite(BankersRoundTestCase))
     return suite
 
 if __name__ == '__main__':
Copyright (C) 2012-2017 Edgewall Software