Home | History | Annotate | Download | only in test
      1 # Tests that work for both bytes and buffer objects.
      2 # See PEP 3137.
      3 
      4 import struct
      5 import sys
      6 
      7 class MixinBytesBufferCommonTests(object):
      8     """Tests that work for both bytes and buffer objects.
      9     See PEP 3137.
     10     """
     11 
     12     def marshal(self, x):
     13         """Convert x into the appropriate type for these tests."""
     14         raise RuntimeError('test class must provide a marshal method')
     15 
     16     def test_islower(self):
     17         self.assertFalse(self.marshal(b'').islower())
     18         self.assertTrue(self.marshal(b'a').islower())
     19         self.assertFalse(self.marshal(b'A').islower())
     20         self.assertFalse(self.marshal(b'\n').islower())
     21         self.assertTrue(self.marshal(b'abc').islower())
     22         self.assertFalse(self.marshal(b'aBc').islower())
     23         self.assertTrue(self.marshal(b'abc\n').islower())
     24         self.assertRaises(TypeError, self.marshal(b'abc').islower, 42)
     25 
     26     def test_isupper(self):
     27         self.assertFalse(self.marshal(b'').isupper())
     28         self.assertFalse(self.marshal(b'a').isupper())
     29         self.assertTrue(self.marshal(b'A').isupper())
     30         self.assertFalse(self.marshal(b'\n').isupper())
     31         self.assertTrue(self.marshal(b'ABC').isupper())
     32         self.assertFalse(self.marshal(b'AbC').isupper())
     33         self.assertTrue(self.marshal(b'ABC\n').isupper())
     34         self.assertRaises(TypeError, self.marshal(b'abc').isupper, 42)
     35 
     36     def test_istitle(self):
     37         self.assertFalse(self.marshal(b'').istitle())
     38         self.assertFalse(self.marshal(b'a').istitle())
     39         self.assertTrue(self.marshal(b'A').istitle())
     40         self.assertFalse(self.marshal(b'\n').istitle())
     41         self.assertTrue(self.marshal(b'A Titlecased Line').istitle())
     42         self.assertTrue(self.marshal(b'A\nTitlecased Line').istitle())
     43         self.assertTrue(self.marshal(b'A Titlecased, Line').istitle())
     44         self.assertFalse(self.marshal(b'Not a capitalized String').istitle())
     45         self.assertFalse(self.marshal(b'Not\ta Titlecase String').istitle())
     46         self.assertFalse(self.marshal(b'Not--a Titlecase String').istitle())
     47         self.assertFalse(self.marshal(b'NOT').istitle())
     48         self.assertRaises(TypeError, self.marshal(b'abc').istitle, 42)
     49 
     50     def test_isspace(self):
     51         self.assertFalse(self.marshal(b'').isspace())
     52         self.assertFalse(self.marshal(b'a').isspace())
     53         self.assertTrue(self.marshal(b' ').isspace())
     54         self.assertTrue(self.marshal(b'\t').isspace())
     55         self.assertTrue(self.marshal(b'\r').isspace())
     56         self.assertTrue(self.marshal(b'\n').isspace())
     57         self.assertTrue(self.marshal(b' \t\r\n').isspace())
     58         self.assertFalse(self.marshal(b' \t\r\na').isspace())
     59         self.assertRaises(TypeError, self.marshal(b'abc').isspace, 42)
     60 
     61     def test_isalpha(self):
     62         self.assertFalse(self.marshal(b'').isalpha())
     63         self.assertTrue(self.marshal(b'a').isalpha())
     64         self.assertTrue(self.marshal(b'A').isalpha())
     65         self.assertFalse(self.marshal(b'\n').isalpha())
     66         self.assertTrue(self.marshal(b'abc').isalpha())
     67         self.assertFalse(self.marshal(b'aBc123').isalpha())
     68         self.assertFalse(self.marshal(b'abc\n').isalpha())
     69         self.assertRaises(TypeError, self.marshal(b'abc').isalpha, 42)
     70 
     71     def test_isalnum(self):
     72         self.assertFalse(self.marshal(b'').isalnum())
     73         self.assertTrue(self.marshal(b'a').isalnum())
     74         self.assertTrue(self.marshal(b'A').isalnum())
     75         self.assertFalse(self.marshal(b'\n').isalnum())
     76         self.assertTrue(self.marshal(b'123abc456').isalnum())
     77         self.assertTrue(self.marshal(b'a1b3c').isalnum())
     78         self.assertFalse(self.marshal(b'aBc000 ').isalnum())
     79         self.assertFalse(self.marshal(b'abc\n').isalnum())
     80         self.assertRaises(TypeError, self.marshal(b'abc').isalnum, 42)
     81 
     82     def test_isdigit(self):
     83         self.assertFalse(self.marshal(b'').isdigit())
     84         self.assertFalse(self.marshal(b'a').isdigit())
     85         self.assertTrue(self.marshal(b'0').isdigit())
     86         self.assertTrue(self.marshal(b'0123456789').isdigit())
     87         self.assertFalse(self.marshal(b'0123456789a').isdigit())
     88 
     89         self.assertRaises(TypeError, self.marshal(b'abc').isdigit, 42)
     90 
     91     def test_lower(self):
     92         self.assertEqual(b'hello', self.marshal(b'HeLLo').lower())
     93         self.assertEqual(b'hello', self.marshal(b'hello').lower())
     94         self.assertRaises(TypeError, self.marshal(b'hello').lower, 42)
     95 
     96     def test_upper(self):
     97         self.assertEqual(b'HELLO', self.marshal(b'HeLLo').upper())
     98         self.assertEqual(b'HELLO', self.marshal(b'HELLO').upper())
     99         self.assertRaises(TypeError, self.marshal(b'hello').upper, 42)
    100 
    101     def test_capitalize(self):
    102         self.assertEqual(b' hello ', self.marshal(b' hello ').capitalize())
    103         self.assertEqual(b'Hello ', self.marshal(b'Hello ').capitalize())
    104         self.assertEqual(b'Hello ', self.marshal(b'hello ').capitalize())
    105         self.assertEqual(b'Aaaa', self.marshal(b'aaaa').capitalize())
    106         self.assertEqual(b'Aaaa', self.marshal(b'AaAa').capitalize())
    107 
    108         self.assertRaises(TypeError, self.marshal(b'hello').capitalize, 42)
    109 
    110     def test_ljust(self):
    111         self.assertEqual(b'abc       ', self.marshal(b'abc').ljust(10))
    112         self.assertEqual(b'abc   ', self.marshal(b'abc').ljust(6))
    113         self.assertEqual(b'abc', self.marshal(b'abc').ljust(3))
    114         self.assertEqual(b'abc', self.marshal(b'abc').ljust(2))
    115         self.assertEqual(b'abc*******', self.marshal(b'abc').ljust(10, '*'))
    116         self.assertRaises(TypeError, self.marshal(b'abc').ljust)
    117 
    118     def test_rjust(self):
    119         self.assertEqual(b'       abc', self.marshal(b'abc').rjust(10))
    120         self.assertEqual(b'   abc', self.marshal(b'abc').rjust(6))
    121         self.assertEqual(b'abc', self.marshal(b'abc').rjust(3))
    122         self.assertEqual(b'abc', self.marshal(b'abc').rjust(2))
    123         self.assertEqual(b'*******abc', self.marshal(b'abc').rjust(10, '*'))
    124         self.assertRaises(TypeError, self.marshal(b'abc').rjust)
    125 
    126     def test_center(self):
    127         self.assertEqual(b'   abc    ', self.marshal(b'abc').center(10))
    128         self.assertEqual(b' abc  ', self.marshal(b'abc').center(6))
    129         self.assertEqual(b'abc', self.marshal(b'abc').center(3))
    130         self.assertEqual(b'abc', self.marshal(b'abc').center(2))
    131         self.assertEqual(b'***abc****', self.marshal(b'abc').center(10, '*'))
    132         self.assertRaises(TypeError, self.marshal(b'abc').center)
    133 
    134     def test_swapcase(self):
    135         self.assertEqual(b'hEllO CoMPuTErS',
    136             self.marshal(b'HeLLo cOmpUteRs').swapcase())
    137 
    138         self.assertRaises(TypeError, self.marshal(b'hello').swapcase, 42)
    139 
    140     def test_zfill(self):
    141         self.assertEqual(b'123', self.marshal(b'123').zfill(2))
    142         self.assertEqual(b'123', self.marshal(b'123').zfill(3))
    143         self.assertEqual(b'0123', self.marshal(b'123').zfill(4))
    144         self.assertEqual(b'+123', self.marshal(b'+123').zfill(3))
    145         self.assertEqual(b'+123', self.marshal(b'+123').zfill(4))
    146         self.assertEqual(b'+0123', self.marshal(b'+123').zfill(5))
    147         self.assertEqual(b'-123', self.marshal(b'-123').zfill(3))
    148         self.assertEqual(b'-123', self.marshal(b'-123').zfill(4))
    149         self.assertEqual(b'-0123', self.marshal(b'-123').zfill(5))
    150         self.assertEqual(b'000', self.marshal(b'').zfill(3))
    151         self.assertEqual(b'34', self.marshal(b'34').zfill(1))
    152         self.assertEqual(b'0034', self.marshal(b'34').zfill(4))
    153 
    154         self.assertRaises(TypeError, self.marshal(b'123').zfill)
    155 
    156     def test_expandtabs(self):
    157         self.assertEqual(b'abc\rab      def\ng       hi',
    158                          self.marshal(b'abc\rab\tdef\ng\thi').expandtabs())
    159         self.assertEqual(b'abc\rab      def\ng       hi',
    160                          self.marshal(b'abc\rab\tdef\ng\thi').expandtabs(8))
    161         self.assertEqual(b'abc\rab  def\ng   hi',
    162                          self.marshal(b'abc\rab\tdef\ng\thi').expandtabs(4))
    163         self.assertEqual(b'abc\r\nab  def\ng   hi',
    164                          self.marshal(b'abc\r\nab\tdef\ng\thi').expandtabs(4))
    165         self.assertEqual(b'abc\rab      def\ng       hi',
    166                          self.marshal(b'abc\rab\tdef\ng\thi').expandtabs())
    167         self.assertEqual(b'abc\rab      def\ng       hi',
    168                          self.marshal(b'abc\rab\tdef\ng\thi').expandtabs(8))
    169         self.assertEqual(b'abc\r\nab\r\ndef\ng\r\nhi',
    170             self.marshal(b'abc\r\nab\r\ndef\ng\r\nhi').expandtabs(4))
    171         self.assertEqual(b'  a\n b', self.marshal(b' \ta\n\tb').expandtabs(1))
    172 
    173         self.assertRaises(TypeError, self.marshal(b'hello').expandtabs, 42, 42)
    174         # This test is only valid when sizeof(int) == sizeof(void*) == 4.
    175         if sys.maxint < (1 << 32) and struct.calcsize('P') == 4:
    176             self.assertRaises(OverflowError,
    177                               self.marshal(b'\ta\n\tb').expandtabs, sys.maxint)
    178 
    179     def test_title(self):
    180         self.assertEqual(b' Hello ', self.marshal(b' hello ').title())
    181         self.assertEqual(b'Hello ', self.marshal(b'hello ').title())
    182         self.assertEqual(b'Hello ', self.marshal(b'Hello ').title())
    183         self.assertEqual(b'Format This As Title String',
    184                          self.marshal(b'fOrMaT thIs aS titLe String').title())
    185         self.assertEqual(b'Format,This-As*Title;String',
    186                          self.marshal(b'fOrMaT,thIs-aS*titLe;String').title())
    187         self.assertEqual(b'Getint', self.marshal(b'getInt').title())
    188         self.assertRaises(TypeError, self.marshal(b'hello').title, 42)
    189 
    190     def test_splitlines(self):
    191         self.assertEqual([b'abc', b'def', b'', b'ghi'],
    192                          self.marshal(b'abc\ndef\n\rghi').splitlines())
    193         self.assertEqual([b'abc', b'def', b'', b'ghi'],
    194                          self.marshal(b'abc\ndef\n\r\nghi').splitlines())
    195         self.assertEqual([b'abc', b'def', b'ghi'],
    196                          self.marshal(b'abc\ndef\r\nghi').splitlines())
    197         self.assertEqual([b'abc', b'def', b'ghi'],
    198                          self.marshal(b'abc\ndef\r\nghi\n').splitlines())
    199         self.assertEqual([b'abc', b'def', b'ghi', b''],
    200                          self.marshal(b'abc\ndef\r\nghi\n\r').splitlines())
    201         self.assertEqual([b'', b'abc', b'def', b'ghi', b''],
    202                          self.marshal(b'\nabc\ndef\r\nghi\n\r').splitlines())
    203         self.assertEqual([b'\n', b'abc\n', b'def\r\n', b'ghi\n', b'\r'],
    204                          self.marshal(b'\nabc\ndef\r\nghi\n\r').splitlines(1))
    205 
    206         self.assertRaises(TypeError, self.marshal(b'abc').splitlines, 42, 42)
    207