summaryrefslogtreecommitdiff
path: root/Lib/test/test_builtin.py
diff options
context:
space:
mode:
authorEric Smith <eric@trueblade.com>2007-08-25 02:26:07 +0000
committerEric Smith <eric@trueblade.com>2007-08-25 02:26:07 +0000
commit8c6632636807c35bee40210ed8483c1eca82664f (patch)
tree50f386d98ce14116eaf9d83085b82ff11bdb3e69 /Lib/test/test_builtin.py
parente4dc32488446240942123cf4e9e7296ad97e20bf (diff)
downloadcpython-git-8c6632636807c35bee40210ed8483c1eca82664f.tar.gz
Implementation of PEP 3101, Advanced String Formatting.
Known issues: The string.Formatter class, as discussed in the PEP, is incomplete. Error handling needs to conform to the PEP. Need to fix this warning that I introduced in Python/formatter_unicode.c: Objects/stringlib/unicodedefs.h:26: warning: `STRINGLIB_CMP' defined but not used Need to make sure sign formatting is correct, more tests needed. Need to remove '()' sign formatting, left over from an earlier version of the PEP.
Diffstat (limited to 'Lib/test/test_builtin.py')
-rw-r--r--Lib/test/test_builtin.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index f77cf78707..0560045d03 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -517,6 +517,32 @@ class BuiltinTest(unittest.TestCase):
self.assertAlmostEqual(float(Foo3(21)), 42.)
self.assertRaises(TypeError, float, Foo4(42))
+ def test_format(self):
+ class A:
+ def __init__(self, x):
+ self.x = x
+ def __format__(self, format_spec):
+ return str(self.x) + format_spec
+
+ # class that returns a bad type from __format__
+ class H:
+ def __format__(self, format_spec):
+ return 1.0
+
+ self.assertEqual(format(3, ''), '3')
+ self.assertEqual(format(A(3), 'spec'), '3spec')
+
+ # for builtin types, format(x, "") == str(x)
+ self.assertEqual(format(17**13, ""), str(17**13))
+ self.assertEqual(format(1.0, ""), str(1.0))
+ self.assertEqual(format(3.1415e104, ""), str(3.1415e104))
+ self.assertEqual(format(-3.1415e104, ""), str(-3.1415e104))
+ 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.assertRaises(TypeError, format, H(), "")
+
def test_getattr(self):
import sys
self.assert_(getattr(sys, 'stdout') is sys.stdout)