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:
Walter Dörwald 2004-08-26 16:53:04 +00:00
parent 592ef6110f
commit 57d88e5abd
4 changed files with 23 additions and 24 deletions

View File

@ -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)

View File

@ -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

View File

@ -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):

View File

@ -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