annotate babel/tests/numbers.py @ 211:5125934e5f27 trunk

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