annotate babel/tests/numbers.py @ 213:b13f3bf4c208

Added support for siginificant digits in number patterns.
author jonas
date Tue, 10 Jul 2007 20:14:05 +0000
parents 7eb6fea17864
children ce3ad60145db
rev   line source
3
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
2 #
14
29ef15a6fd75 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 3
diff changeset
3 # Copyright (C) 2007 Edgewall Software
3
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
4 # All rights reserved.
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
5 #
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
6 # This software is licensed as described in the file COPYING, which
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
7 # you should have received as part of this distribution. The terms
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
8 # are also available at http://babel.edgewall.org/wiki/License.
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
9 #
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
10 # This software consists of voluntary contributions made by many
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
11 # individuals. For the exact contribution history, see the revision
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
12 # history and logs, available at http://babel.edgewall.org/log/.
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
13
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
14 import doctest
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
15 import unittest
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
16
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
17 from babel import numbers
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
18
52
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
19
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
20 class FormatDecimalTestCase(unittest.TestCase):
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
21
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
22 def test_subpatterns(self):
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
23 self.assertEqual(numbers.format_decimal(-12345, '#,##0.##;-#',
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
24 locale='en_US'), '-12,345')
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
25 self.assertEqual(numbers.format_decimal(-12345, '#,##0.##;(#)',
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
26 locale='en_US'), '(12,345)')
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
27
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
28 def test_default_rounding(self):
64
7eb6fea17864 The order of extraction methods is now preserved (see #10).
cmlenz
parents: 52
diff changeset
29 """
7eb6fea17864 The order of extraction methods is now preserved (see #10).
cmlenz
parents: 52
diff changeset
30 Testing Round-Half-Even (Banker's rounding)
52
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
31
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
32 A '5' is rounded to the closest 'even' number
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
33 """
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
34 self.assertEqual(numbers.format_decimal(5.5, '0', locale='sv'), '6')
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
35 self.assertEqual(numbers.format_decimal(6.5, '0', locale='sv'), '6')
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
36 self.assertEqual(numbers.format_decimal(1.2325, locale='sv'), '1,232')
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
37 self.assertEqual(numbers.format_decimal(1.2335, locale='sv'), '1,234')
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
38
213
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
39 def test_significant_digits(self):
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
40 """Test significant digits patterns"""
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
41 self.assertEqual(numbers.format_decimal(123004, '@@',locale='en_US'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
42 '120000')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
43 self.assertEqual(numbers.format_decimal(1.12, '@', locale='sv'), '1')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
44 self.assertEqual(numbers.format_decimal(1.1, '@@', locale='sv'), '1,1')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
45 self.assertEqual(numbers.format_decimal(1.1, '@@@@@##', locale='sv'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
46 '1,1000')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
47 self.assertEqual(numbers.format_decimal(0.0001, '@@@', locale='sv'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
48 '0,000100')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
49 self.assertEqual(numbers.format_decimal(0.0001234, '@@@', locale='sv'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
50 '0,000123')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
51 self.assertEqual(numbers.format_decimal(0.0001234, '@@@#',locale='sv'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
52 '0,0001234')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
53 self.assertEqual(numbers.format_decimal(0.0001234, '@@@#',locale='sv'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
54 '0,0001234')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
55 self.assertEqual(numbers.format_decimal(0.12345, '@@@',locale='sv'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
56 '0,123')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
57 self.assertEqual(numbers.format_decimal(3.14159, '@@##',locale='sv'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
58 '3,142')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
59 self.assertEqual(numbers.format_decimal(1.23004, '@@##',locale='sv'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
60 '1,23')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
61 self.assertEqual(numbers.format_decimal(1230.04, '@@,@@',locale='en_US'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
62 '12,30')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
63 self.assertEqual(numbers.format_decimal(123.41, '@@##',locale='en_US'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
64 '123.4')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
65 self.assertEqual(numbers.format_decimal(1, '@@',locale='en_US'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
66 '1.0')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
67 self.assertEqual(numbers.format_decimal(0, '@',locale='en_US'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
68 '0')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
69 self.assertEqual(numbers.format_decimal(0.1, '@',locale='en_US'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
70 '0.1')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
71 self.assertEqual(numbers.format_decimal(0.1, '@#',locale='en_US'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
72 '0.1')
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
73 self.assertEqual(numbers.format_decimal(0.1, '@@',locale='en_US'),
b13f3bf4c208 Added support for siginificant digits in number patterns.
jonas
parents: 64
diff changeset
74 '0.10')
3
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
75 def suite():
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
76 suite = unittest.TestSuite()
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
77 suite.addTest(doctest.DocTestSuite(numbers))
52
4df5e8994657 Added round-half-even (banker's rounding) support.
jonas
parents: 14
diff changeset
78 suite.addTest(unittest.makeSuite(FormatDecimalTestCase))
3
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
79 return suite
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
80
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
81 if __name__ == '__main__':
e9eaddab598e Import of initial code base.
cmlenz
parents:
diff changeset
82 unittest.main(defaultTest='suite')
Copyright (C) 2012-2017 Edgewall Software