Issue #6615: logging: Used weak references in internal handler list. Thanks to flox...
[python.git] / Lib / test / buffer_tests.py
blobdb27759d795c5814c79db150e690046d714b8bb5
1 # Tests that work for both bytes and buffer objects.
2 # See PEP 3137.
4 import struct
5 import sys
7 class MixinBytesBufferCommonTests(object):
8 """Tests that work for both bytes and buffer objects.
9 See PEP 3137.
10 """
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')
16 def test_islower(self):
17 self.assertFalse(self.marshal(b'').islower())
18 self.assert_(self.marshal(b'a').islower())
19 self.assertFalse(self.marshal(b'A').islower())
20 self.assertFalse(self.marshal(b'\n').islower())
21 self.assert_(self.marshal(b'abc').islower())
22 self.assertFalse(self.marshal(b'aBc').islower())
23 self.assert_(self.marshal(b'abc\n').islower())
24 self.assertRaises(TypeError, self.marshal(b'abc').islower, 42)
26 def test_isupper(self):
27 self.assertFalse(self.marshal(b'').isupper())
28 self.assertFalse(self.marshal(b'a').isupper())
29 self.assert_(self.marshal(b'A').isupper())
30 self.assertFalse(self.marshal(b'\n').isupper())
31 self.assert_(self.marshal(b'ABC').isupper())
32 self.assertFalse(self.marshal(b'AbC').isupper())
33 self.assert_(self.marshal(b'ABC\n').isupper())
34 self.assertRaises(TypeError, self.marshal(b'abc').isupper, 42)
36 def test_istitle(self):
37 self.assertFalse(self.marshal(b'').istitle())
38 self.assertFalse(self.marshal(b'a').istitle())
39 self.assert_(self.marshal(b'A').istitle())
40 self.assertFalse(self.marshal(b'\n').istitle())
41 self.assert_(self.marshal(b'A Titlecased Line').istitle())
42 self.assert_(self.marshal(b'A\nTitlecased Line').istitle())
43 self.assert_(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)
50 def test_isspace(self):
51 self.assertFalse(self.marshal(b'').isspace())
52 self.assertFalse(self.marshal(b'a').isspace())
53 self.assert_(self.marshal(b' ').isspace())
54 self.assert_(self.marshal(b'\t').isspace())
55 self.assert_(self.marshal(b'\r').isspace())
56 self.assert_(self.marshal(b'\n').isspace())
57 self.assert_(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)
61 def test_isalpha(self):
62 self.assertFalse(self.marshal(b'').isalpha())
63 self.assert_(self.marshal(b'a').isalpha())
64 self.assert_(self.marshal(b'A').isalpha())
65 self.assertFalse(self.marshal(b'\n').isalpha())
66 self.assert_(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)
71 def test_isalnum(self):
72 self.assertFalse(self.marshal(b'').isalnum())
73 self.assert_(self.marshal(b'a').isalnum())
74 self.assert_(self.marshal(b'A').isalnum())
75 self.assertFalse(self.marshal(b'\n').isalnum())
76 self.assert_(self.marshal(b'123abc456').isalnum())
77 self.assert_(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)
82 def test_isdigit(self):
83 self.assertFalse(self.marshal(b'').isdigit())
84 self.assertFalse(self.marshal(b'a').isdigit())
85 self.assert_(self.marshal(b'0').isdigit())
86 self.assert_(self.marshal(b'0123456789').isdigit())
87 self.assertFalse(self.marshal(b'0123456789a').isdigit())
89 self.assertRaises(TypeError, self.marshal(b'abc').isdigit, 42)
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)
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)
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())
108 self.assertRaises(TypeError, self.marshal(b'hello').capitalize, 42)
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)
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)
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)
134 def test_swapcase(self):
135 self.assertEqual(b'hEllO CoMPuTErS',
136 self.marshal(b'HeLLo cOmpUteRs').swapcase())
138 self.assertRaises(TypeError, self.marshal(b'hello').swapcase, 42)
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))
154 self.assertRaises(TypeError, self.marshal(b'123').zfill)
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))
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)
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)
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))
206 self.assertRaises(TypeError, self.marshal(b'abc').splitlines, 42, 42)