Mercurial > babel > mirror
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 | 1 # -*- coding: utf-8 -*- |
2 # | |
12
e6ba3e878b10
* Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents:
1
diff
changeset
|
3 # Copyright (C) 2007 Edgewall Software |
1 | 4 # All rights reserved. |
5 # | |
6 # This software is licensed as described in the file COPYING, which | |
7 # you should have received as part of this distribution. The terms | |
8 # are also available at http://babel.edgewall.org/wiki/License. | |
9 # | |
10 # This software consists of voluntary contributions made by many | |
11 # individuals. For the exact contribution history, see the revision | |
12 # history and logs, available at http://babel.edgewall.org/log/. | |
13 | |
14 import doctest | |
15 import unittest | |
16 | |
17 from babel import numbers | |
18 | |
50 | 19 |
20 class FormatDecimalTestCase(unittest.TestCase): | |
21 | |
22 def test_subpatterns(self): | |
23 self.assertEqual(numbers.format_decimal(-12345, '#,##0.##;-#', | |
24 locale='en_US'), '-12,345') | |
25 self.assertEqual(numbers.format_decimal(-12345, '#,##0.##;(#)', | |
26 locale='en_US'), '(12,345)') | |
27 | |
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 | 31 |
32 A '5' is rounded to the closest 'even' number | |
33 """ | |
34 self.assertEqual(numbers.format_decimal(5.5, '0', locale='sv'), '6') | |
35 self.assertEqual(numbers.format_decimal(6.5, '0', locale='sv'), '6') | |
36 self.assertEqual(numbers.format_decimal(1.2325, locale='sv'), '1,232') | |
37 self.assertEqual(numbers.format_decimal(1.2335, locale='sv'), '1,234') | |
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 | 75 def suite(): |
76 suite = unittest.TestSuite() | |
77 suite.addTest(doctest.DocTestSuite(numbers)) | |
50 | 78 suite.addTest(unittest.makeSuite(FormatDecimalTestCase)) |
1 | 79 return suite |
80 | |
81 if __name__ == '__main__': | |
82 unittest.main(defaultTest='suite') |