Additional test for formatting code.
authorEric Smith <eric@trueblade.com>
Mon, 27 Aug 2007 19:07:22 +0000 (19:07 +0000)
committerEric Smith <eric@trueblade.com>
Mon, 27 Aug 2007 19:07:22 +0000 (19:07 +0000)
Lib/test/test_builtin.py
Lib/test/test_unicode.py

index 0560045d034206720b6ab08a94bbf397bfc0bd41..2d3e1ccd90bcc4ee92f0b044f51fda3e6b3fd493 100644 (file)
@@ -541,7 +541,8 @@ class BuiltinTest(unittest.TestCase):
         self.assertEqual(format(-3.1415e-104, ""), str(-3.1415e-104))
         self.assertEqual(format(object, ""), str(object))
 
-        #self.assertRaises(TypeError, format, H(), "")
+        # TypeError because self.__format__ returns the wrong type
+        self.assertRaises(TypeError, format, H(), "")
 
     def test_getattr(self):
         import sys
index 662acd378d1af6217f07e251b34bfa1f2ffbff9e..47d7236b701ec611f6206d4b4a2fb39648e3f6ae 100644 (file)
@@ -424,6 +424,10 @@ class UnicodeTest(
             def __format__(self, format_spec):
                 return 1.0
 
+        class I(datetime.date):
+            def __format__(self, format_spec):
+                return self.strftime(format_spec)
+
 
         self.assertEqual(''.format(), '')
         self.assertEqual('abc'.format(), 'abc')
@@ -504,9 +508,6 @@ class UnicodeTest(
         self.assertEqual('{0!r:}'.format('Hello'), "'Hello'")
         self.assertEqual('{0!r}'.format(F('Hello')), 'F(Hello)')
 
-        # XXX should pass, but currently don't
-        # format(object, "")
-
         # test fallback to object.__format__
         self.assertEqual('{0}'.format({}), '{}')
         self.assertEqual('{0}'.format([]), '[]')
@@ -518,6 +519,11 @@ class UnicodeTest(
         self.assertEqual('{0:>15s}'.format(G('data')), ' string is data')
         self.assertEqual('{0!s}'.format(G('data')), 'string is data')
 
+        self.assertEqual("{0:date: %Y-%m-%d}".format(I(year=2007,
+                                                       month=8,
+                                                       day=27)),
+                         "date: 2007-08-27")
+
         # string format specifiers
         self.assertEqual('{0:}'.format('a'), 'a')