diff --git a/Lib/test/test_string.py b/Lib/test/test_string.py
index 4c5a60a..8f0ea47 100644
--- a/Lib/test/test_string.py
+++ b/Lib/test/test_string.py
@@ -22,6 +22,25 @@
     except:
         value = sys.exc_type
         f = name
+    if value == output:
+        # if the original is returned make sure that
+        # this doesn't happen with subclasses
+        if value is input:
+            class ssub(str):
+                def __repr__(self):
+                    return 'ssub(%r)' % str.__repr__(self)
+            input = ssub(input)
+            try:
+                f = getattr(input, name)
+                value = apply(f, args)
+            except AttributeError:
+                f = getattr(string, name)
+                value = apply(f, (input,) + args)
+            if value is input:
+                if verbose:
+                   print 'no'
+                print '*',f, `input`, `output`, `value`
+                return
     if value != output:
         if verbose:
             print 'no'
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index c04d929..8e8ddf9 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -52,6 +52,25 @@
         exc = sys.exc_info()[:2]
     else:
         exc = None
+    if value == output and type(value) is type(output):
+        # if the original is returned make sure that
+        # this doesn't happen with subclasses
+        if value is input:
+            class usub(unicode):
+                def __repr__(self):
+                    return 'usub(%r)' % unicode.__repr__(self)
+            input = usub(input)
+            try:
+                f = getattr(input, method)
+                value = apply(f, args)
+            except:
+                value = sys.exc_type
+                exc = sys.exc_info()[:2]
+            if value is input:
+                if verbose:
+                   print 'no'
+                print '*',f, `input`, `output`, `value`
+                return
     if value != output or type(value) is not type(output):
         if verbose:
             print 'no'
@@ -63,6 +82,7 @@
             print 'yes'
 
 test('capitalize', u' hello ', u' hello ')
+test('capitalize', u'Hello ', u'Hello ')
 test('capitalize', u'hello ', u'Hello ')
 test('capitalize', u'aaaa', u'Aaaa')
 test('capitalize', u'AaAa', u'Aaaa')
@@ -75,6 +95,7 @@
 test('count', u'aaa', 0, 'b')
 
 test('title', u' hello ', u' Hello ')
+test('title', u'Hello ', u'Hello ')
 test('title', u'hello ', u'Hello ')
 test('title', u"fOrMaT thIs aS titLe String", u'Format This As Title String')
 test('title', u"fOrMaT,thIs-aS*titLe;String", u'Format,This-As*Title;String')
@@ -200,6 +221,7 @@
 test('expandtabs', u'abc\rab\tdef\ng\thi', u'abc\rab      def\ng       hi', 8)
 test('expandtabs', u'abc\rab\tdef\ng\thi', u'abc\rab  def\ng   hi', 4)
 test('expandtabs', u'abc\r\nab\tdef\ng\thi', u'abc\r\nab  def\ng   hi', 4)
+test('expandtabs', u'abc\r\nab\r\ndef\ng\r\nhi', u'abc\r\nab\r\ndef\ng\r\nhi', 4)
 
 if 0:
     test('capwords', u'abc def ghi', u'Abc Def Ghi')
