diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/string_tests.py | 19 | ||||
-rw-r--r-- | Lib/test/test_str.py | 3 | ||||
-rw-r--r-- | Lib/test/test_string.py | 22 | ||||
-rw-r--r-- | Lib/test/test_unicode.py | 3 |
4 files changed, 23 insertions, 24 deletions
diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py index 860c1f2..9cf6b9e1c 100644 --- a/Lib/test/string_tests.py +++ b/Lib/test/string_tests.py @@ -648,6 +648,7 @@ class MixinStrUnicodeUserStringTest: else: self.checkcall(format, "__mod__", value) + class MixinStrStringUserStringTest: # Additional tests for 8bit strings, i.e. str, UserString and # the string module @@ -695,3 +696,21 @@ class MixinStrUserStringTest: self.checkraises(TypeError, 'xyz', 'decode', 42) self.checkraises(TypeError, 'xyz', 'encode', 42) + + +class MixinStrUnicodeTest: + # Additional tests that only work with + # str and unicode + + 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 + t = self.type2test + class subclass(t): + pass + s1 = subclass("abcd") + s2 = t().join([s1]) + self.assert_(s1 is not s2) + self.assert_(type(s2) is t) diff --git a/Lib/test/test_str.py b/Lib/test/test_str.py index 1295a8c..82632f1 100644 --- a/Lib/test/test_str.py +++ b/Lib/test/test_str.py @@ -5,7 +5,8 @@ from test import test_support, string_tests class StrTest( string_tests.CommonTest, string_tests.MixinStrUnicodeUserStringTest, - string_tests.MixinStrUserStringTest + string_tests.MixinStrUserStringTest, + string_tests.MixinStrUnicodeTest, ): type2test = str diff --git a/Lib/test/test_string.py b/Lib/test/test_string.py index ba9d9d3..d80c3b6 100644 --- a/Lib/test/test_string.py +++ b/Lib/test/test_string.py @@ -52,28 +52,6 @@ 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): diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index 215c968..69244f0 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -11,7 +11,8 @@ from test import test_support, string_tests class UnicodeTest( string_tests.CommonTest, - string_tests.MixinStrUnicodeUserStringTest + string_tests.MixinStrUnicodeUserStringTest, + string_tests.MixinStrUnicodeTest, ): type2test = unicode |