diff options
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_builtin.py | 1 | ||||
-rw-r--r-- | Lib/test/test_long.py | 15 | ||||
-rw-r--r-- | Lib/test/test_unicode.py | 16 |
3 files changed, 22 insertions, 10 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 2d3e1cc..e5957ae 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -540,6 +540,7 @@ class BuiltinTest(unittest.TestCase): self.assertEqual(format(3.1415e-104, ""), str(3.1415e-104)) self.assertEqual(format(-3.1415e-104, ""), str(-3.1415e-104)) self.assertEqual(format(object, ""), str(object)) + self.assertEqual(format(None, ""), str(None)) # TypeError because self.__format__ returns the wrong type self.assertRaises(TypeError, format, H(), "") diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index 4e15340..4ba825a 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -497,13 +497,25 @@ class LongTest(unittest.TestCase): self.assertEqual(format(123456789, 'd'), '123456789') self.assertEqual(format(123456789, 'd'), '123456789') + # sign and aligning are interdependent + self.assertEqual(format(1, "-"), '1') + self.assertEqual(format(-1, "-"), '-1') + self.assertEqual(format(1, "-3"), ' 1') + self.assertEqual(format(-1, "-3"), ' -1') + self.assertEqual(format(1, "+3"), ' +1') + self.assertEqual(format(-1, "+3"), ' -1') + self.assertEqual(format(1, " 3"), ' 1') + self.assertEqual(format(-1, " 3"), ' -1') + self.assertEqual(format(1, " "), ' 1') + self.assertEqual(format(-1, " "), '-1') + # hex self.assertEqual(format(3, "x"), "3") self.assertEqual(format(3, "X"), "3") self.assertEqual(format(1234, "x"), "4d2") self.assertEqual(format(-1234, "x"), "-4d2") self.assertEqual(format(1234, "8x"), " 4d2") -# XXX fix self.assertEqual(format(-1234, "8x"), " -4d2") + self.assertEqual(format(-1234, "8x"), " -4d2") self.assertEqual(format(1234, "x"), "4d2") self.assertEqual(format(-1234, "x"), "-4d2") self.assertEqual(format(-3, "x"), "-3") @@ -530,7 +542,6 @@ class LongTest(unittest.TestCase): # make sure these are errors self.assertRaises(ValueError, format, 3, "1.3") # precision disallowed - return self.assertRaises(ValueError, format, 3, "+c") # sign not allowed # with 'c' self.assertRaises(ValueError, format, 3, "R") # bogus format type diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index 47d7236..444656a 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -379,8 +379,6 @@ class UnicodeTest( self.assertEqual("The year is {0.year}".format(d), "The year is 2007") - #"{0!r:20}".format("Hello") - # classes we'll use for testing class C: def __init__(self, x=100): @@ -428,6 +426,10 @@ class UnicodeTest( def __format__(self, format_spec): return self.strftime(format_spec) + class J(int): + def __format__(self, format_spec): + return int.__format__(self * 2, format_spec) + self.assertEqual(''.format(), '') self.assertEqual('abc'.format(), 'abc') @@ -465,12 +467,6 @@ class UnicodeTest( self.assertEqual('{0[1][0]}'.format(['abc', ['def']]), 'def') self.assertEqual('{0[1][0].x}'.format(['abc', [D('def')]]), 'def') - # I'm not sure if this should work, or if it's a problem if it does work - #'{0[_{foo}]}'.format({'_FOO': 'abc'}, foo='FOO') - #('{0[{foo}{bar}]}'.format({'FOOBAR': 'abc'}, foo='FOO', bar='BAR') - - # format specifiers for built in types - # strings self.assertEqual('{0:.3s}'.format('abc'), 'abc') self.assertEqual('{0:.3s}'.format('ab'), 'ab') @@ -524,6 +520,10 @@ class UnicodeTest( day=27)), "date: 2007-08-27") + # test deriving from a builtin type and overriding __format__ + self.assertEqual("{0}".format(J(10)), "20") + + # string format specifiers self.assertEqual('{0:}'.format('a'), 'a') |