| from test_support import verbose, TestSkipped | 
 | import string_tests | 
 | import string, sys | 
 |  | 
 | # XXX: kludge... short circuit if strings don't have methods | 
 | try: | 
 |     ''.join | 
 | except AttributeError: | 
 |     raise TestSkipped | 
 |  | 
 | def test(name, input, output, *args): | 
 |     if verbose: | 
 |         print 'string.%s%s =? %s... ' % (name, (input,) + args, output), | 
 |     try: | 
 |         # Prefer string methods over string module functions | 
 |         try: | 
 |             f = getattr(input, name) | 
 |             value = apply(f, args) | 
 |         except AttributeError: | 
 |             f = getattr(string, name) | 
 |             value = apply(f, (input,) + args) | 
 |     except: | 
 |          value = sys.exc_type | 
 |     if value != output: | 
 |         if verbose: | 
 |             print 'no' | 
 |         print f, `input`, `output`, `value` | 
 |     else: | 
 |         if verbose: | 
 |             print 'yes' | 
 |  | 
 | string_tests.run_module_tests(test) | 
 | string_tests.run_method_tests(test) | 
 |  | 
 | string.whitespace | 
 | string.lowercase | 
 | string.uppercase | 
 |  |