diff options
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_string.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Lib/test/test_string.py b/Lib/test/test_string.py index 859dd4e..ba9d9d3 100644 --- a/Lib/test/test_string.py +++ b/Lib/test/test_string.py @@ -52,6 +52,29 @@ class StringTest( self.checkraises(TypeError, string_tests.BadSeq1(), 'join', ' ') self.checkequal('a b c', string_tests.BadSeq2(), 'join', ' ') + def test_bug1001011(self): + # Make sure join returns a NEW object for single item sequences + # involving a subclass + # Make sure that it is of the appropriate type + # Check the optimisation still occurs for standard objects + class str_subclass(str): pass + s1 = str_subclass('abcd') + s2 = ''.join([s1]) + self.failIf(s1 is s2) + self.assertEqual(type(s2), type('')) + s3 = 'abcd' + s4 = ''.join([s3]) + self.failUnless(s3 is s4) + if test_support.have_unicode: + class unicode_subclass(unicode): pass + u1 = unicode_subclass(u'abcd') + u2 = ''.join([u1]) + self.failIf(u1 is u2) + self.assertEqual(type(u2), type(u'')) + u3 = u'abcd' + u4 = ''.join([u3]) + self.failUnless(u3 is u4) + class ModuleTest(unittest.TestCase): def test_attrs(self): |