Mercurial > babel > mirror
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__':