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:
|
else:
|
||||||
self.checkcall(format, "__mod__", value)
|
self.checkcall(format, "__mod__", value)
|
||||||
|
|
||||||
|
|
||||||
class MixinStrStringUserStringTest:
|
class MixinStrStringUserStringTest:
|
||||||
# Additional tests for 8bit strings, i.e. str, UserString and
|
# Additional tests for 8bit strings, i.e. str, UserString and
|
||||||
# the string module
|
# the string module
|
||||||
|
@ -695,3 +696,21 @@ class MixinStrUserStringTest:
|
||||||
|
|
||||||
self.checkraises(TypeError, 'xyz', 'decode', 42)
|
self.checkraises(TypeError, 'xyz', 'decode', 42)
|
||||||
self.checkraises(TypeError, 'xyz', 'encode', 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(
|
class StrTest(
|
||||||
string_tests.CommonTest,
|
string_tests.CommonTest,
|
||||||
string_tests.MixinStrUnicodeUserStringTest,
|
string_tests.MixinStrUnicodeUserStringTest,
|
||||||
string_tests.MixinStrUserStringTest
|
string_tests.MixinStrUserStringTest,
|
||||||
|
string_tests.MixinStrUnicodeTest,
|
||||||
):
|
):
|
||||||
|
|
||||||
type2test = str
|
type2test = str
|
||||||
|
|
|
@ -52,28 +52,6 @@ class StringTest(
|
||||||
self.checkraises(TypeError, string_tests.BadSeq1(), 'join', ' ')
|
self.checkraises(TypeError, string_tests.BadSeq1(), 'join', ' ')
|
||||||
self.checkequal('a b c', string_tests.BadSeq2(), '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):
|
class ModuleTest(unittest.TestCase):
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,8 @@ from test import test_support, string_tests
|
||||||
|
|
||||||
class UnicodeTest(
|
class UnicodeTest(
|
||||||
string_tests.CommonTest,
|
string_tests.CommonTest,
|
||||||
string_tests.MixinStrUnicodeUserStringTest
|
string_tests.MixinStrUnicodeUserStringTest,
|
||||||
|
string_tests.MixinStrUnicodeTest,
|
||||||
):
|
):
|
||||||
type2test = unicode
|
type2test = unicode
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue