[Zope3-checkins] CVS: Zope3/src/zope/i18n/tests - test_formats.py:1.3

Jim Fulton jim@zope.com
Thu, 9 Jan 2003 09:33:33 -0500


Update of /cvs-repository/Zope3/src/zope/i18n/tests
In directory cvs.zope.org:/tmp/cvs-serv19167/src/zope/i18n/tests

Modified Files:
	test_formats.py 
Log Message:
Recovered lost data in two files dur to bug in emacs version control. :(


=== Zope3/src/zope/i18n/tests/test_formats.py 1.2 => 1.3 ===
--- Zope3/src/zope/i18n/tests/test_formats.py:1.2	Thu Jan  9 09:13:17 2003
+++ Zope3/src/zope/i18n/tests/test_formats.py	Thu Jan  9 09:33:30 2003
@@ -200,7 +200,108 @@
         # XXX The parser does not support timezones yet.
         self.assertEqual(self.format.parse(
             'Donnerstag, 2. Januar 2003 21:48 Uhr +100',
-            "E
+            "EEEE, d. MMMM yyyy H:mm' Uhr 'z"), 
+            datetime.datetime(2003, 01, 02, 21, 48))
+
+    def testParseAMPMDateTime(self):
+        self.assertEqual(
+            self.format.parse('02.01.03 09:48 nachm.', 'dd.MM.yy hh:mm a'), 
+            datetime.datetime(2003, 01, 02, 21, 48))
+
+    def testDateTimeParseError(self):
+        self.assertRaises(DateTimeParseError, 
+            self.format.parse, '02.01.03 21:48', 'dd.MM.yyyy HH:mm')
+        
+    def testFormatSimpleDateTime(self):
+        # German short
+        self.assertEqual(
+            self.format.format(datetime.datetime(2003, 01, 02, 21, 48),
+                              'dd.MM.yy HH:mm'),  
+            '02.01.03 21:48')
+
+    def testFormatRealDateTime(self):
+        # German medium
+        self.assertEqual(
+            self.format.format(datetime.datetime(2003, 01, 02, 21, 48, 01),
+                              'dd.MM.yyyy HH:mm:ss'),  
+            '02.01.2003 21:48:01')
+
+        # German long
+        # XXX The parser does not support timezones yet.
+        self.assertEqual(self.format.format(
+            datetime.datetime(2003, 01, 02, 21, 48, 01),
+            'd. MMMM yyyy HH:mm:ss z'), 
+            '2. Januar 2003 21:48:01 +000')
+
+        # German full
+        # XXX The parser does not support timezones yet.
+        self.assertEqual(self.format.format(
+            datetime.datetime(2003, 01, 02, 21, 48),
+            "EEEE, d. MMMM yyyy H:mm' Uhr 'z"), 
+            'Donnerstag, 2. Januar 2003 21:48 Uhr +000')
+
+    def testFormatAMPMDateTime(self):
+        self.assertEqual(self.format.format(
+            datetime.datetime(2003, 01, 02, 21, 48),
+            'dd.MM.yy hh:mm a'), 
+            '02.01.03 09:48 nachm.')
+            
+
+class TestNumberPatternParser(TestCase):
+    """Extensive tests for the ICU-based-syntax number pattern parser."""
+
+    def testParseSimpleIntegerPattern(self):
+        self.assertEqual(
+            parseNumberPattern('###0'),
+            ( (None, '', None, '###0', '', '', None, '', None, 0),
+              (None, '', None, '###0', '', '', None, '', None, 0)) )
+
+    def testParseScientificIntegerPattern(self):
+        self.assertEqual(
+            parseNumberPattern('###0E#0'),
+            ( (None, '', None, '###0', '', '#0', None, '', None, 0),
+              (None, '', None, '###0', '', '#0', None, '', None, 0)) )
+
+    def testParsePosNegAlternativeIntegerPattern(self):
+        self.assertEqual(
+            parseNumberPattern('###0;#0'),
+            ( (None, '', None, '###0', '', '', None, '', None, 0),
+              (None, '', None,   '#0', '', '', None, '', None, 0)) )
+
+    def testParsePrefixedIntegerPattern(self):
+        self.assertEqual(
+            parseNumberPattern('+###0'),
+            ( (None, '+', None, '###0', '', '', None, '', None, 0),
+              (None, '+', None, '###0', '', '', None, '', None, 0)) )
+
+    def testParsePosNegIntegerPattern(self):
+        self.assertEqual(
+            parseNumberPattern('+###0;-###0'),
+            ( (None, '+', None, '###0', '', '', None, '', None, 0),
+              (None, '-', None, '###0', '', '', None, '', None, 0)) )
+
+    def testParseScientificPosNegIntegerPattern(self):
+        self.assertEqual(
+            parseNumberPattern('+###0E0;-###0E#0'),
+            ( (None, '+', None, '###0', '', '0', None, '', None, 0),
+              (None, '-', None, '###0', '', '#0', None, '', None, 0)) )
+
+    def testParseThousandSeparatorIntegerPattern(self):
+        self.assertEqual(
+            parseNumberPattern('#,##0'),
+            ( (None, '', None, '###0', '', '', None, '', None, 1),
+              (None, '', None, '###0', '', '', None, '', None, 1)) )
+        
+    def testParseSimpleDecimalPattern(self):
+        self.assertEqual(
+            parseNumberPattern('###0.00#'),
+            ( (None, '', None, '###0', '00#', '', None, '', None, 0),
+              (None, '', None, '###0', '00#', '', None, '', None, 0)) )
+
+    def testParseScientificDecimalPattern(self):
+        self.assertEqual(
+            parseNumberPattern('###0.00#E#0'),
+            ( (None, '', None, '###0', '00#', '#0', None, '', None, 0),
               (None, '', None, '###0', '00#', '#0', None, '', None, 0)) )
 
     def testParsePosNegAlternativeFractionPattern(self):
@@ -564,7 +665,95 @@
                          '+23341')
         self.assertEqual(self.format.format(41, '+#000;-#000'),
                          '+041')
+        self.assertEqual(self.format.format(-23341, '+###0;-###0'),
+                         '-23341')
+        self.assertEqual(self.format.format(-41, '+#000;-#000'),
+                         '-041')
+
+    def testFormatPosNegScientificInteger(self):
+        self.assertEqual(self.format.format(23341, '+0.00###E00;-0.00###E00'),
+                         '+2.3341E04')
+        self.assertEqual(self.format.format(23341, '-0.00###E00;-0.00###E00'),
+                         '-2.3341E04')
+
+    def testFormatThousandSeparatorInteger(self):
+        self.assertEqual(self.format.format(23341, '+#,##0;-#,##0'),
+                         '+23,341')
+        self.assertEqual(self.format.format(-23341, '+#,##0;-#,##0'),
+                         '-23,341')
+        self.assertEqual(self.format.format(41, '+#0,000;-#0,000'),
+                         '+0,041')
+        self.assertEqual(self.format.format(-41, '+#0,000;-#0,000'),
+                         '-0,041')
+
+    def testFormatDecimal(self):
+        self.assertEqual(self.format.format(23341.02357, '###0.0#'),
+                         '23341.02')
+        self.assertEqual(self.format.format(23341.02357, '###0.000#'),
+                         '23341.0235')
+        self.assertEqual(self.format.format(23341.02, '###0.000#'),
+                         '23341.020')
+
+    def testFormatScientificDecimal(self):
+        self.assertEqual(self.format.format(23341.02357, '0.00####E00'),
+                         '2.334102E04')
+        self.assertEqual(self.format.format(23341.02, '0.0000000E000'),
+                         '2.3341020E004')
+
+    def testFormatScientificDecimalSmallerOne(self):
+        self.assertEqual(self.format.format(0.02357, '0.00####E00'),
+                         '2.357E-02')
+        self.assertEqual(self.format.format(0.02, '0.0000E00'),
+                         '2.0000E-02')
+
+    def testFormatPadding1WithoutPrefix(self):
+        self.assertEqual(self.format.format(41, '* ##0;*_##0'),
+                         ' 41')
+        self.assertEqual(self.format.format(-41, '* ##0;*_##0'),
+                         '_41')
+
+    def testFormatPadding1WithPrefix(self):
+        self.assertEqual(self.format.format(41, '* +##0;*_-##0'),
+                         ' +41')
+        self.assertEqual(self.format.format(-41, '* +##0;*_-##0'),
+                         '_-41')
+
+    def testFormatPadding1Scientific(self):
+        self.assertEqual(self.format.format(41.02, '* 0.0####E0;*_0.0####E0'),
+                         '  4.102E1')
+        self.assertEqual(self.format.format(-41.02, '* 0.0####E0;*_0.0####E0'),
+                         '__4.102E1')
+        self.assertEqual(self.format.format(41.02, '* +0.0###E0;*_-0.0###E0'),
+                         ' +4.102E1')
+        self.assertEqual(self.format.format(-41.02, '* +0.0###E0;*_-0.0###E0'),
+                         '_-4.102E1')
+
+    def testFormatPadding1Padding2WithPrefix(self):
+        self.assertEqual(self.format.format(41, '* +* ###0;*_-*_###0'),
+                         '  + 41')
+        self.assertEqual(self.format.format(-41, '* +* ###0;*_-*_###0'),
+                         '__-_41')
+
+    def testFormatPadding3WithoutSufffix(self):
+        self.assertEqual(self.format.format(41.02, '#0.0###* ;#0.0###*_'),
+                         '41.02  ')
+        self.assertEqual(self.format.format(-41.02, '#0.0###* ;#0.0###*_'),
+                         '41.02__')
         
+    def testFormatPadding3WithSufffix(self):
+        self.assertEqual(self.format.format(41.02, '[#0.0###* ];(#0.0###*_)'),
+                         '[41.02  ]')
+        self.assertEqual(self.format.format(-41.02, '[#0.0###* ];(#0.0###*_)'),
+                         '(41.02__)')
+
+    def testFormatPadding3Scientific(self):
+        self.assertEqual(self.format.format(41.02, '0.0##E0##* ;0.0##E0##*_'),
+                         '4.102E1  ')
+        self.assertEqual(self.format.format(-41.02, '0.0##E0##* ;0.0##E0##*_'),
+                         '4.102E1__')
+        self.assertEqual(self.format.format(41.02, '(0.0##E0##* );0.0E0'),
+                         '(4.102E1  )')
+        self.assertEqual(self.format.format(-41.02, '0.0E0;[0.0##E0##*_]'),
                          '[4.102E1__]')
 
     def testFormatPadding3Padding4WithSuffix(self):