Move test_bug1001011() to string_tests.MixinStrUnicodeTest so that
it can be used for str and unicode. Drop the test for "".join([s]) is s because this is an implementation detail (and doesn't work for unicode)
This commit is contained in:
parent
592ef6110f
commit
57d88e5abd
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue