diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py
index 860c1f2..9cf6b9e 100644
--- a/Lib/test/string_tests.py
+++ b/Lib/test/string_tests.py
@@ -648,6 +648,7 @@
                 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 @@
 
         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 @@
 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 @@
         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 @@
 
 class UnicodeTest(
     string_tests.CommonTest,
-    string_tests.MixinStrUnicodeUserStringTest
+    string_tests.MixinStrUnicodeUserStringTest,
+    string_tests.MixinStrUnicodeTest,
     ):
     type2test = unicode
 
