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) |
---|