[Python-checkins] python/dist/src/Lib/test test_builtin.py,1.8,1.9

doerwalter@users.sourceforge.net doerwalter@users.sourceforge.net
Tue, 04 Feb 2003 12:24:48 -0800


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv25412/Lib/test

Modified Files:
	test_builtin.py 
Log Message:
Make sure filter() never returns tuple, str or unicode
subclasses. (Discussed in SF patch #665835)


Index: test_builtin.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_builtin.py,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** test_builtin.py	4 Feb 2003 17:04:01 -0000	1.8
--- test_builtin.py	4 Feb 2003 20:24:45 -0000	1.9
***************
*** 409,412 ****
--- 409,435 ----
              )
  
+     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)