Home | History | Annotate | Download | only in test
      1 # UserString is a wrapper around the native builtin string type.
      2 # UserString instances should behave similar to builtin string objects.
      3 
      4 import unittest
      5 from test import string_tests
      6 
      7 from collections import UserString
      8 
      9 class UserStringTest(
     10     string_tests.CommonTest,
     11     string_tests.MixinStrUnicodeUserStringTest,
     12     unittest.TestCase
     13     ):
     14 
     15     type2test = UserString
     16 
     17     # Overwrite the three testing methods, because UserString
     18     # can't cope with arguments propagated to UserString
     19     # (and we don't test with subclasses)
     20     def checkequal(self, result, object, methodname, *args, **kwargs):
     21         result = self.fixtype(result)
     22         object = self.fixtype(object)
     23         # we don't fix the arguments, because UserString can't cope with it
     24         realresult = getattr(object, methodname)(*args, **kwargs)
     25         self.assertEqual(
     26             result,
     27             realresult
     28         )
     29 
     30     def checkraises(self, exc, obj, methodname, *args):
     31         obj = self.fixtype(obj)
     32         # we don't fix the arguments, because UserString can't cope with it
     33         with self.assertRaises(exc) as cm:
     34             getattr(obj, methodname)(*args)
     35         self.assertNotEqual(str(cm.exception), '')
     36 
     37     def checkcall(self, object, methodname, *args):
     38         object = self.fixtype(object)
     39         # we don't fix the arguments, because UserString can't cope with it
     40         getattr(object, methodname)(*args)
     41 
     42 
     43 if __name__ == "__main__":
     44     unittest.main()
     45