summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_builtin.py
diff options
context:
space:
mode:
authorWalter Dörwald <walter@livinglogic.de>2003-02-04 20:24:45 (GMT)
committerWalter Dörwald <walter@livinglogic.de>2003-02-04 20:24:45 (GMT)
commitc3da83fcd7e25ffb1ed15f5adad4efa1c03ebc03 (patch)
treeabf6639ce3bd8515011ff2bbeadc45f8a07caa73 /Lib/test/test_builtin.py
parent29273c87da0ef361f84fee41385f7c991536f9cd (diff)
downloadcpython-c3da83fcd7e25ffb1ed15f5adad4efa1c03ebc03.zip
cpython-c3da83fcd7e25ffb1ed15f5adad4efa1c03ebc03.tar.gz
cpython-c3da83fcd7e25ffb1ed15f5adad4efa1c03ebc03.tar.bz2
Make sure filter() never returns tuple, str or unicode
subclasses. (Discussed in SF patch #665835)
Diffstat (limited to 'Lib/test/test_builtin.py')
-rw-r--r--Lib/test/test_builtin.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index 2b0c017..92e44d5 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -408,6 +408,29 @@ class BuiltinTest(unittest.TestCase):
unicode("345")
)
+ def test_filter_subclasses(self):
+ # test, that filter() never returns tuple, str or unicode subclasses
+ funcs = (None, lambda x: True)
+ class tuple2(tuple):
+ pass
+ class str2(str):
+ pass
+ inputs = {
+ tuple2: [(), (1,2,3)],
+ str2: ["", "123"]
+ }
+ if have_unicode:
+ class unicode2(unicode):
+ pass
+ inputs[unicode2] = [unicode(), unicode("123")]
+
+ for func in funcs:
+ for (cls, inps) in inputs.iteritems():
+ for inp in inps:
+ out = filter(func, cls(inp))
+ self.assertEqual(inp, out)
+ self.assert_(not isinstance(out, cls))
+
def test_float(self):
self.assertEqual(float(3.14), 3.14)
self.assertEqual(float(314), 314.0)