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