Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_memoryio.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | b5640f265c11 |
| children |
| rev | line source |
|---|---|
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
1 """Unit tests for memory-based file-like objects. |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
2 StringIO -- for unicode strings |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
3 BytesIO -- for bytes |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
4 """ |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
5 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
6 import unittest |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46724
diff
changeset
|
7 from test import support |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
8 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
9 import io |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
10 import _pyio as pyio |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
11 import pickle |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
12 |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
13 class MemorySeekTestMixin: |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
14 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
15 def testInit(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
16 buf = self.buftype("1234567890") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
17 bytesIo = self.ioclass(buf) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
18 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
19 def testRead(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
20 buf = self.buftype("1234567890") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
21 bytesIo = self.ioclass(buf) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
22 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
23 self.assertEqual(buf[:1], bytesIo.read(1)) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
24 self.assertEqual(buf[1:5], bytesIo.read(4)) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
25 self.assertEqual(buf[5:], bytesIo.read(900)) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
26 self.assertEqual(self.EOF, bytesIo.read()) |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
27 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
28 def testReadNoArgs(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
29 buf = self.buftype("1234567890") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
30 bytesIo = self.ioclass(buf) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
31 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
32 self.assertEqual(buf, bytesIo.read()) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
33 self.assertEqual(self.EOF, bytesIo.read()) |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
34 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
35 def testSeek(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
36 buf = self.buftype("1234567890") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
37 bytesIo = self.ioclass(buf) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
38 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
39 bytesIo.read(5) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
40 bytesIo.seek(0) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
41 self.assertEqual(buf, bytesIo.read()) |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
42 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
43 bytesIo.seek(3) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
44 self.assertEqual(buf[3:], bytesIo.read()) |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
45 self.assertRaises(TypeError, bytesIo.seek, 0.0) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
46 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
47 def testTell(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
48 buf = self.buftype("1234567890") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
49 bytesIo = self.ioclass(buf) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
50 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
51 self.assertEqual(0, bytesIo.tell()) |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
52 bytesIo.seek(5) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
53 self.assertEqual(5, bytesIo.tell()) |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
54 bytesIo.seek(10000) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66302
diff
changeset
|
55 self.assertEqual(10000, bytesIo.tell()) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
56 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
57 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
58 class MemoryTestMixin: |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
59 |
|
53649
bc04cebca7e6
implement a detach() method for BufferedIOBase and TextIOBase #5883
Benjamin Peterson <benjamin@python.org>
parents:
52247
diff
changeset
|
60 def test_detach(self): |
|
bc04cebca7e6
implement a detach() method for BufferedIOBase and TextIOBase #5883
Benjamin Peterson <benjamin@python.org>
parents:
52247
diff
changeset
|
61 buf = self.ioclass() |
|
bc04cebca7e6
implement a detach() method for BufferedIOBase and TextIOBase #5883
Benjamin Peterson <benjamin@python.org>
parents:
52247
diff
changeset
|
62 self.assertRaises(self.UnsupportedOperation, buf.detach) |
|
bc04cebca7e6
implement a detach() method for BufferedIOBase and TextIOBase #5883
Benjamin Peterson <benjamin@python.org>
parents:
52247
diff
changeset
|
63 |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
64 def write_ops(self, f, t): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
65 self.assertEqual(f.write(t("blah.")), 5) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
66 self.assertEqual(f.seek(0), 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
67 self.assertEqual(f.write(t("Hello.")), 6) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
68 self.assertEqual(f.tell(), 6) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
69 self.assertEqual(f.seek(5), 5) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
70 self.assertEqual(f.tell(), 5) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
71 self.assertEqual(f.write(t(" world\n\n\n")), 9) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
72 self.assertEqual(f.seek(0), 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
73 self.assertEqual(f.write(t("h")), 1) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
74 self.assertEqual(f.truncate(12), 12) |
|
58631
d887db501a22
Merged revisions 77895-77896 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55609
diff
changeset
|
75 self.assertEqual(f.tell(), 1) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
76 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
77 def test_write(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
78 buf = self.buftype("hello world\n") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
79 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
80 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
81 self.write_ops(memio, self.buftype) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
82 self.assertEqual(memio.getvalue(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
83 memio = self.ioclass() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
84 self.write_ops(memio, self.buftype) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
85 self.assertEqual(memio.getvalue(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
86 self.assertRaises(TypeError, memio.write, None) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
87 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
88 self.assertRaises(ValueError, memio.write, self.buftype("")) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
89 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
90 def test_writelines(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
91 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
92 memio = self.ioclass() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
93 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
94 self.assertEqual(memio.writelines([buf] * 100), None) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
95 self.assertEqual(memio.getvalue(), buf * 100) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
96 memio.writelines([]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
97 self.assertEqual(memio.getvalue(), buf * 100) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
98 memio = self.ioclass() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
99 self.assertRaises(TypeError, memio.writelines, [buf] + [1]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
100 self.assertEqual(memio.getvalue(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
101 self.assertRaises(TypeError, memio.writelines, None) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
102 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
103 self.assertRaises(ValueError, memio.writelines, []) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
104 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
105 def test_writelines_error(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
106 memio = self.ioclass() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
107 def error_gen(): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
108 yield self.buftype('spam') |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
109 raise KeyboardInterrupt |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
110 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
111 self.assertRaises(KeyboardInterrupt, memio.writelines, error_gen()) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
112 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
113 def test_truncate(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
114 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
115 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
116 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
117 self.assertRaises(ValueError, memio.truncate, -1) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
118 memio.seek(6) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
119 self.assertEqual(memio.truncate(), 6) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
120 self.assertEqual(memio.getvalue(), buf[:6]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
121 self.assertEqual(memio.truncate(4), 4) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
122 self.assertEqual(memio.getvalue(), buf[:4]) |
|
58631
d887db501a22
Merged revisions 77895-77896 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55609
diff
changeset
|
123 self.assertEqual(memio.tell(), 6) |
|
d887db501a22
Merged revisions 77895-77896 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55609
diff
changeset
|
124 memio.seek(0, 2) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
125 memio.write(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
126 self.assertEqual(memio.getvalue(), buf[:4] + buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
127 pos = memio.tell() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
128 self.assertEqual(memio.truncate(None), pos) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
129 self.assertEqual(memio.tell(), pos) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
130 self.assertRaises(TypeError, memio.truncate, '0') |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
131 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
132 self.assertRaises(ValueError, memio.truncate, 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
133 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
134 def test_init(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
135 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
136 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
137 self.assertEqual(memio.getvalue(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
138 memio = self.ioclass(None) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
139 self.assertEqual(memio.getvalue(), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
140 memio.__init__(buf * 2) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
141 self.assertEqual(memio.getvalue(), buf * 2) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
142 memio.__init__(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
143 self.assertEqual(memio.getvalue(), buf) |
|
55609
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
144 self.assertRaises(TypeError, memio.__init__, []) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
145 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
146 def test_read(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
147 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
148 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
149 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
150 self.assertEqual(memio.read(0), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
151 self.assertEqual(memio.read(1), buf[:1]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
152 self.assertEqual(memio.read(4), buf[1:5]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
153 self.assertEqual(memio.read(900), buf[5:]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
154 self.assertEqual(memio.read(), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
155 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
156 self.assertEqual(memio.read(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
157 self.assertEqual(memio.read(), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
158 self.assertEqual(memio.tell(), 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
159 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
160 self.assertEqual(memio.read(-1), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
161 memio.seek(0) |
|
46695
02a8142d83db
Added tests to check the buffer type returned during reading.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46694
diff
changeset
|
162 self.assertEqual(type(memio.read()), type(buf)) |
|
46709
7486c29f93a3
Fixed a small bug introduced by r62778.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46695
diff
changeset
|
163 memio.seek(100) |
|
7486c29f93a3
Fixed a small bug introduced by r62778.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46695
diff
changeset
|
164 self.assertEqual(type(memio.read()), type(buf)) |
|
46695
02a8142d83db
Added tests to check the buffer type returned during reading.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46694
diff
changeset
|
165 memio.seek(0) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
166 self.assertEqual(memio.read(None), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
167 self.assertRaises(TypeError, memio.read, '') |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
168 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
169 self.assertRaises(ValueError, memio.read) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
170 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
171 def test_readline(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
172 buf = self.buftype("1234567890\n") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
173 memio = self.ioclass(buf * 2) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
174 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
175 self.assertEqual(memio.readline(0), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
176 self.assertEqual(memio.readline(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
177 self.assertEqual(memio.readline(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
178 self.assertEqual(memio.readline(), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
179 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
180 self.assertEqual(memio.readline(5), buf[:5]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
181 self.assertEqual(memio.readline(5), buf[5:10]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
182 self.assertEqual(memio.readline(5), buf[10:15]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
183 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
184 self.assertEqual(memio.readline(-1), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
185 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
186 self.assertEqual(memio.readline(0), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
187 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
188 buf = self.buftype("1234567890\n") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
189 memio = self.ioclass((buf * 3)[:-1]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
190 self.assertEqual(memio.readline(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
191 self.assertEqual(memio.readline(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
192 self.assertEqual(memio.readline(), buf[:-1]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
193 self.assertEqual(memio.readline(), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
194 memio.seek(0) |
|
46695
02a8142d83db
Added tests to check the buffer type returned during reading.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46694
diff
changeset
|
195 self.assertEqual(type(memio.readline()), type(buf)) |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
196 self.assertEqual(memio.readline(), buf) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
197 self.assertRaises(TypeError, memio.readline, '') |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
198 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
199 self.assertRaises(ValueError, memio.readline) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
200 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
201 def test_readlines(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
202 buf = self.buftype("1234567890\n") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
203 memio = self.ioclass(buf * 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
204 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
205 self.assertEqual(memio.readlines(), [buf] * 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
206 memio.seek(5) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
207 self.assertEqual(memio.readlines(), [buf[5:]] + [buf] * 9) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
208 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
209 self.assertEqual(memio.readlines(15), [buf] * 2) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
210 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
211 self.assertEqual(memio.readlines(-1), [buf] * 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
212 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
213 self.assertEqual(memio.readlines(0), [buf] * 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
214 memio.seek(0) |
|
46695
02a8142d83db
Added tests to check the buffer type returned during reading.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46694
diff
changeset
|
215 self.assertEqual(type(memio.readlines()[0]), type(buf)) |
|
02a8142d83db
Added tests to check the buffer type returned during reading.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46694
diff
changeset
|
216 memio.seek(0) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
217 self.assertEqual(memio.readlines(None), [buf] * 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
218 self.assertRaises(TypeError, memio.readlines, '') |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
219 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
220 self.assertRaises(ValueError, memio.readlines) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
221 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
222 def test_iterator(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
223 buf = self.buftype("1234567890\n") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
224 memio = self.ioclass(buf * 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
225 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
226 self.assertEqual(iter(memio), memio) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55581
diff
changeset
|
227 self.assertTrue(hasattr(memio, '__iter__')) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55581
diff
changeset
|
228 self.assertTrue(hasattr(memio, '__next__')) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
229 i = 0 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
230 for line in memio: |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
231 self.assertEqual(line, buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
232 i += 1 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
233 self.assertEqual(i, 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
234 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
235 i = 0 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
236 for line in memio: |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
237 self.assertEqual(line, buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
238 i += 1 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
239 self.assertEqual(i, 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
240 memio = self.ioclass(buf * 2) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
241 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
242 self.assertRaises(ValueError, memio.__next__) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
243 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
244 def test_getvalue(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
245 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
246 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
247 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
248 self.assertEqual(memio.getvalue(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
249 memio.read() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
250 self.assertEqual(memio.getvalue(), buf) |
|
46695
02a8142d83db
Added tests to check the buffer type returned during reading.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46694
diff
changeset
|
251 self.assertEqual(type(memio.getvalue()), type(buf)) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
252 memio = self.ioclass(buf * 1000) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
253 self.assertEqual(memio.getvalue()[-3:], self.buftype("890")) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
254 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
255 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
256 self.assertRaises(ValueError, memio.getvalue) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
257 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
258 def test_seek(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
259 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
260 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
261 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
262 memio.read(5) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
263 self.assertRaises(ValueError, memio.seek, -1) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
264 self.assertRaises(ValueError, memio.seek, 1, -1) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
265 self.assertRaises(ValueError, memio.seek, 1, 3) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
266 self.assertEqual(memio.seek(0), 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
267 self.assertEqual(memio.seek(0, 0), 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
268 self.assertEqual(memio.read(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
269 self.assertEqual(memio.seek(3), 3) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
270 self.assertEqual(memio.seek(0, 1), 3) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
271 self.assertEqual(memio.read(), buf[3:]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
272 self.assertEqual(memio.seek(len(buf)), len(buf)) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
273 self.assertEqual(memio.read(), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
274 memio.seek(len(buf) + 1) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
275 self.assertEqual(memio.read(), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
276 self.assertEqual(memio.seek(0, 2), len(buf)) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
277 self.assertEqual(memio.read(), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
278 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
279 self.assertRaises(ValueError, memio.seek, 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
280 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
281 def test_overseek(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
282 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
283 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
284 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
285 self.assertEqual(memio.seek(len(buf) + 1), 11) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
286 self.assertEqual(memio.read(), self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
287 self.assertEqual(memio.tell(), 11) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
288 self.assertEqual(memio.getvalue(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
289 memio.write(self.EOF) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
290 self.assertEqual(memio.getvalue(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
291 memio.write(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
292 self.assertEqual(memio.getvalue(), buf + self.buftype('\0') + buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
293 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
294 def test_tell(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
295 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
296 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
297 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
298 self.assertEqual(memio.tell(), 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
299 memio.seek(5) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
300 self.assertEqual(memio.tell(), 5) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
301 memio.seek(10000) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
302 self.assertEqual(memio.tell(), 10000) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
303 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
304 self.assertRaises(ValueError, memio.tell) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
305 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
306 def test_flush(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
307 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
308 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
309 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
310 self.assertEqual(memio.flush(), None) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
311 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
312 def test_flags(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
313 memio = self.ioclass() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
314 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
315 self.assertEqual(memio.writable(), True) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
316 self.assertEqual(memio.readable(), True) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
317 self.assertEqual(memio.seekable(), True) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
318 self.assertEqual(memio.isatty(), False) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
319 self.assertEqual(memio.closed, False) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
320 memio.close() |
|
78852
524931e5aebf
Issue #15841: The readable(), writable() and seekable() methods of BytesIO
Antoine Pitrou <solipsis@pitrou.net>
parents:
78321
diff
changeset
|
321 self.assertRaises(ValueError, memio.writable) |
|
524931e5aebf
Issue #15841: The readable(), writable() and seekable() methods of BytesIO
Antoine Pitrou <solipsis@pitrou.net>
parents:
78321
diff
changeset
|
322 self.assertRaises(ValueError, memio.readable) |
|
524931e5aebf
Issue #15841: The readable(), writable() and seekable() methods of BytesIO
Antoine Pitrou <solipsis@pitrou.net>
parents:
78321
diff
changeset
|
323 self.assertRaises(ValueError, memio.seekable) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
324 self.assertRaises(ValueError, memio.isatty) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
325 self.assertEqual(memio.closed, True) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
326 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
327 def test_subclassing(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
328 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
329 def test1(): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
330 class MemIO(self.ioclass): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
331 pass |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
332 m = MemIO(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
333 return m.getvalue() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
334 def test2(): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
335 class MemIO(self.ioclass): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
336 def __init__(me, a, b): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
337 self.ioclass.__init__(me, a) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
338 m = MemIO(buf, None) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
339 return m.getvalue() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
340 self.assertEqual(test1(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
341 self.assertEqual(test2(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
342 |
|
55609
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
343 def test_instance_dict_leak(self): |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
344 # Test case for issue #6242. |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
345 # This will be caught by regrtest.py -R if this leak. |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
346 for _ in range(100): |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
347 memio = self.ioclass() |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
348 memio.foo = 1 |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
349 |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
350 def test_pickling(self): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
351 buf = self.buftype("1234567890") |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
352 memio = self.ioclass(buf) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
353 memio.foo = 42 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
354 memio.seek(2) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
355 |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
356 class PickleTestMemIO(self.ioclass): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
357 def __init__(me, initvalue, foo): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
358 self.ioclass.__init__(me, initvalue) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
359 me.foo = foo |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
360 # __getnewargs__ is undefined on purpose. This checks that PEP 307 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
361 # is used to provide pickling support. |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
362 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
363 # Pickle expects the class to be on the module level. Here we use a |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
364 # little hack to allow the PickleTestMemIO class to derive from |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
365 # self.ioclass without having to define all combinations explictly on |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
366 # the module-level. |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
367 import __main__ |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
368 PickleTestMemIO.__module__ = '__main__' |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
369 __main__.PickleTestMemIO = PickleTestMemIO |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
370 submemio = PickleTestMemIO(buf, 80) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
371 submemio.seek(2) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
372 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
373 # We only support pickle protocol 2 and onward since we use extended |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
374 # __reduce__ API of PEP 307 to provide pickling support. |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
375 for proto in range(2, pickle.HIGHEST_PROTOCOL): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
376 for obj in (memio, submemio): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
377 obj2 = pickle.loads(pickle.dumps(obj, protocol=proto)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
378 self.assertEqual(obj.getvalue(), obj2.getvalue()) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
379 self.assertEqual(obj.__class__, obj2.__class__) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
380 self.assertEqual(obj.foo, obj2.foo) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
381 self.assertEqual(obj.tell(), obj2.tell()) |
|
83322
8345b0dcb5e2
Fix pickling test in test_memoryio.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
78853
diff
changeset
|
382 obj2.close() |
|
8345b0dcb5e2
Fix pickling test in test_memoryio.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
78853
diff
changeset
|
383 self.assertRaises(ValueError, pickle.dumps, obj2, proto) |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
384 del __main__.PickleTestMemIO |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
385 |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
386 |
|
64496
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
387 class BytesIOMixin: |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
388 |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
389 def test_getbuffer(self): |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
390 memio = self.ioclass(b"1234567890") |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
391 buf = memio.getbuffer() |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
392 self.assertEqual(bytes(buf), b"1234567890") |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
393 memio.seek(5) |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
394 buf = memio.getbuffer() |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
395 self.assertEqual(bytes(buf), b"1234567890") |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
396 # Trying to change the size of the BytesIO while a buffer is exported |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
397 # raises a BufferError. |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
398 self.assertRaises(BufferError, memio.write, b'x' * 100) |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
399 self.assertRaises(BufferError, memio.truncate) |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
400 # Mutating the buffer updates the BytesIO |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
401 buf[3:6] = b"abc" |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
402 self.assertEqual(bytes(buf), b"123abc7890") |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
403 self.assertEqual(memio.getvalue(), b"123abc7890") |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
404 # After the buffer gets released, we can resize the BytesIO again |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
405 del buf |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
406 support.gc_collect() |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
407 memio.truncate() |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
408 |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
409 |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
410 class PyBytesIOTest(MemoryTestMixin, MemorySeekTestMixin, |
|
21405812f312
Issue #5506: BytesIO objects now have a getbuffer() method exporting a
Antoine Pitrou <solipsis@pitrou.net>
parents:
64355
diff
changeset
|
411 BytesIOMixin, unittest.TestCase): |
|
53649
bc04cebca7e6
implement a detach() method for BufferedIOBase and TextIOBase #5883
Benjamin Peterson <benjamin@python.org>
parents:
52247
diff
changeset
|
412 |
|
bc04cebca7e6
implement a detach() method for BufferedIOBase and TextIOBase #5883
Benjamin Peterson <benjamin@python.org>
parents:
52247
diff
changeset
|
413 UnsupportedOperation = pyio.UnsupportedOperation |
|
bc04cebca7e6
implement a detach() method for BufferedIOBase and TextIOBase #5883
Benjamin Peterson <benjamin@python.org>
parents:
52247
diff
changeset
|
414 |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
415 @staticmethod |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
416 def buftype(s): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
417 return s.encode("ascii") |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
418 ioclass = pyio.BytesIO |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
419 EOF = b"" |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
420 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
421 def test_read1(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
422 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
423 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
424 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
425 self.assertRaises(TypeError, memio.read1) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
426 self.assertEqual(memio.read(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
427 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
428 def test_readinto(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
429 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
430 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
431 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
432 b = bytearray(b"hello") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
433 self.assertEqual(memio.readinto(b), 5) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
434 self.assertEqual(b, b"12345") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
435 self.assertEqual(memio.readinto(b), 5) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
436 self.assertEqual(b, b"67890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
437 self.assertEqual(memio.readinto(b), 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
438 self.assertEqual(b, b"67890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
439 b = bytearray(b"hello world") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
440 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
441 self.assertEqual(memio.readinto(b), 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
442 self.assertEqual(b, b"1234567890d") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
443 b = bytearray(b"") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
444 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
445 self.assertEqual(memio.readinto(b), 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
446 self.assertEqual(b, b"") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
447 self.assertRaises(TypeError, memio.readinto, '') |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
448 import array |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
449 a = array.array('b', b"hello world") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
450 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
451 memio.readinto(a) |
|
64355
fa8b57f987c5
Issue #8990: array.fromstring() and array.tostring() get renamed to
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
452 self.assertEqual(a.tobytes(), b"1234567890d") |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
453 memio.close() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
454 self.assertRaises(ValueError, memio.readinto, b) |
|
66302
7cdbdbf3480b
Merged revisions 86587 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58631
diff
changeset
|
455 memio = self.ioclass(b"123") |
|
7cdbdbf3480b
Merged revisions 86587 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58631
diff
changeset
|
456 b = bytearray() |
|
7cdbdbf3480b
Merged revisions 86587 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58631
diff
changeset
|
457 memio.seek(42) |
|
7cdbdbf3480b
Merged revisions 86587 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58631
diff
changeset
|
458 memio.readinto(b) |
|
7cdbdbf3480b
Merged revisions 86587 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58631
diff
changeset
|
459 self.assertEqual(b, b"") |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
460 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
461 def test_relative_seek(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
462 buf = self.buftype("1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
463 memio = self.ioclass(buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
464 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
465 self.assertEqual(memio.seek(-1, 1), 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
466 self.assertEqual(memio.seek(3, 1), 3) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
467 self.assertEqual(memio.seek(-4, 1), 0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
468 self.assertEqual(memio.seek(-1, 2), 9) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
469 self.assertEqual(memio.seek(1, 1), 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
470 self.assertEqual(memio.seek(1, 2), 11) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
471 memio.seek(-3, 2) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
472 self.assertEqual(memio.read(), buf[-3:]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
473 memio.seek(0) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
474 memio.seek(1, 1) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
475 self.assertEqual(memio.read(), buf[1:]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
476 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
477 def test_unicode(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
478 memio = self.ioclass() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
479 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
480 self.assertRaises(TypeError, self.ioclass, "1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
481 self.assertRaises(TypeError, memio.write, "1234567890") |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
482 self.assertRaises(TypeError, memio.writelines, ["1234567890"]) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
483 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
484 def test_bytes_array(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
485 buf = b"1234567890" |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
486 import array |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
487 a = array.array('b', list(buf)) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
488 memio = self.ioclass(a) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
489 self.assertEqual(memio.getvalue(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
490 self.assertEqual(memio.write(a), 10) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
491 self.assertEqual(memio.getvalue(), buf) |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
492 |
|
55581
1acd0277d225
Merged revisions 74316,74335 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54599
diff
changeset
|
493 def test_issue5449(self): |
|
1acd0277d225
Merged revisions 74316,74335 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54599
diff
changeset
|
494 buf = self.buftype("1234567890") |
|
1acd0277d225
Merged revisions 74316,74335 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54599
diff
changeset
|
495 self.ioclass(initial_bytes=buf) |
|
1acd0277d225
Merged revisions 74316,74335 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54599
diff
changeset
|
496 self.assertRaises(TypeError, self.ioclass, buf, foo=None) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
497 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
498 |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
499 class TextIOTestMixin: |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
500 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
501 def test_newlines_property(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
502 memio = self.ioclass(newline=None) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
503 # The C StringIO decodes newlines in write() calls, but the Python |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
504 # implementation only does when reading. This function forces them to |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
505 # be decoded for testing. |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
506 def force_decode(): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
507 memio.seek(0) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
508 memio.read() |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
509 self.assertEqual(memio.newlines, None) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
510 memio.write("a\n") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
511 force_decode() |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
512 self.assertEqual(memio.newlines, "\n") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
513 memio.write("b\r\n") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
514 force_decode() |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
515 self.assertEqual(memio.newlines, ("\n", "\r\n")) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
516 memio.write("c\rd") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
517 force_decode() |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
518 self.assertEqual(memio.newlines, ("\r", "\n", "\r\n")) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
519 |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
520 def test_relative_seek(self): |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
521 memio = self.ioclass() |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
522 |
|
81039
7d69d04522e3
Replace IOError with OSError (#16715)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
78853
diff
changeset
|
523 self.assertRaises(OSError, memio.seek, -1, 1) |
|
7d69d04522e3
Replace IOError with OSError (#16715)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
78853
diff
changeset
|
524 self.assertRaises(OSError, memio.seek, 3, 1) |
|
7d69d04522e3
Replace IOError with OSError (#16715)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
78853
diff
changeset
|
525 self.assertRaises(OSError, memio.seek, -3, 1) |
|
7d69d04522e3
Replace IOError with OSError (#16715)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
78853
diff
changeset
|
526 self.assertRaises(OSError, memio.seek, -1, 2) |
|
7d69d04522e3
Replace IOError with OSError (#16715)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
78853
diff
changeset
|
527 self.assertRaises(OSError, memio.seek, 1, 1) |
|
7d69d04522e3
Replace IOError with OSError (#16715)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
78853
diff
changeset
|
528 self.assertRaises(OSError, memio.seek, 1, 2) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
529 |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
530 def test_textio_properties(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
531 memio = self.ioclass() |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
532 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
533 # These are just dummy values but we nevertheless check them for fear |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
534 # of unexpected breakage. |
|
54599
1f8d98720acc
give the C implementation of TextIOWrapper the errors property #6217
Benjamin Peterson <benjamin@python.org>
parents:
53649
diff
changeset
|
535 self.assertIsNone(memio.encoding) |
|
1f8d98720acc
give the C implementation of TextIOWrapper the errors property #6217
Benjamin Peterson <benjamin@python.org>
parents:
53649
diff
changeset
|
536 self.assertIsNone(memio.errors) |
|
1f8d98720acc
give the C implementation of TextIOWrapper the errors property #6217
Benjamin Peterson <benjamin@python.org>
parents:
53649
diff
changeset
|
537 self.assertFalse(memio.line_buffering) |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
538 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
539 def test_newline_none(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
540 # newline=None |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
541 memio = self.ioclass("a\nb\r\nc\rd", newline=None) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
542 self.assertEqual(list(memio), ["a\n", "b\n", "c\n", "d"]) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
543 memio.seek(0) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
544 self.assertEqual(memio.read(1), "a") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
545 self.assertEqual(memio.read(2), "\nb") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
546 self.assertEqual(memio.read(2), "\nc") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
547 self.assertEqual(memio.read(1), "\n") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
548 memio = self.ioclass(newline=None) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
549 self.assertEqual(2, memio.write("a\n")) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
550 self.assertEqual(3, memio.write("b\r\n")) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
551 self.assertEqual(3, memio.write("c\rd")) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
552 memio.seek(0) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
553 self.assertEqual(memio.read(), "a\nb\nc\nd") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
554 memio = self.ioclass("a\r\nb", newline=None) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
555 self.assertEqual(memio.read(3), "a\nb") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
556 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
557 def test_newline_empty(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
558 # newline="" |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
559 memio = self.ioclass("a\nb\r\nc\rd", newline="") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
560 self.assertEqual(list(memio), ["a\n", "b\r\n", "c\r", "d"]) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
561 memio.seek(0) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
562 self.assertEqual(memio.read(4), "a\nb\r") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
563 self.assertEqual(memio.read(2), "\nc") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
564 self.assertEqual(memio.read(1), "\r") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
565 memio = self.ioclass(newline="") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
566 self.assertEqual(2, memio.write("a\n")) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
567 self.assertEqual(2, memio.write("b\r")) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
568 self.assertEqual(2, memio.write("\nc")) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
569 self.assertEqual(2, memio.write("\rd")) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
570 memio.seek(0) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
571 self.assertEqual(list(memio), ["a\n", "b\r\n", "c\r", "d"]) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
572 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
573 def test_newline_lf(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
574 # newline="\n" |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
575 memio = self.ioclass("a\nb\r\nc\rd") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
576 self.assertEqual(list(memio), ["a\n", "b\r\n", "c\rd"]) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
577 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
578 def test_newline_cr(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
579 # newline="\r" |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
580 memio = self.ioclass("a\nb\r\nc\rd", newline="\r") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
581 self.assertEqual(memio.read(), "a\rb\r\rc\rd") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
582 memio.seek(0) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
583 self.assertEqual(list(memio), ["a\r", "b\r", "\r", "c\r", "d"]) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
584 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
585 def test_newline_crlf(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
586 # newline="\r\n" |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
587 memio = self.ioclass("a\nb\r\nc\rd", newline="\r\n") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
588 self.assertEqual(memio.read(), "a\r\nb\r\r\nc\rd") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
589 memio.seek(0) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
590 self.assertEqual(list(memio), ["a\r\n", "b\r\r\n", "c\rd"]) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
591 |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
592 def test_issue5265(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
593 # StringIO can duplicate newlines in universal newlines mode |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
594 memio = self.ioclass("a\r\nb\r\n", newline=None) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
595 self.assertEqual(memio.read(5), "a\nb\n") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
596 |
|
55609
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
597 def test_newline_argument(self): |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
598 self.assertRaises(TypeError, self.ioclass, newline=b"\n") |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
599 self.assertRaises(ValueError, self.ioclass, newline="error") |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
600 # These should not raise an error |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
601 for newline in (None, "", "\n", "\r", "\r\n"): |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
602 self.ioclass(newline=newline) |
|
9d40586a6afc
Merged revisions 74126,74130-74131,74149,74155,74157,74180-74183,74398 via svnmerge from
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
603 |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
604 |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
605 class PyStringIOTest(MemoryTestMixin, MemorySeekTestMixin, |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
606 TextIOTestMixin, unittest.TestCase): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
607 buftype = str |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
608 ioclass = pyio.StringIO |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
609 UnsupportedOperation = pyio.UnsupportedOperation |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
610 EOF = "" |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
611 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
612 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
613 class PyStringIOPickleTest(TextIOTestMixin, unittest.TestCase): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
614 """Test if pickle restores properly the internal state of StringIO. |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
615 """ |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
616 buftype = str |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
617 UnsupportedOperation = pyio.UnsupportedOperation |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
618 EOF = "" |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
619 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
620 class ioclass(pyio.StringIO): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
621 def __new__(cls, *args, **kwargs): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
622 return pickle.loads(pickle.dumps(pyio.StringIO(*args, **kwargs))) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
623 def __init__(self, *args, **kwargs): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
624 pass |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
625 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
626 |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
627 class CBytesIOTest(PyBytesIOTest): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
628 ioclass = io.BytesIO |
|
53649
bc04cebca7e6
implement a detach() method for BufferedIOBase and TextIOBase #5883
Benjamin Peterson <benjamin@python.org>
parents:
52247
diff
changeset
|
629 UnsupportedOperation = io.UnsupportedOperation |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
630 |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
631 def test_getstate(self): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
632 memio = self.ioclass() |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
633 state = memio.__getstate__() |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
634 self.assertEqual(len(state), 3) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
635 bytearray(state[0]) # Check if state[0] supports the buffer interface. |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55551
diff
changeset
|
636 self.assertIsInstance(state[1], int) |
|
66310
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66301
diff
changeset
|
637 self.assertTrue(isinstance(state[2], dict) or state[2] is None) |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
638 memio.close() |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
639 self.assertRaises(ValueError, memio.__getstate__) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
640 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
641 def test_setstate(self): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
642 # This checks whether __setstate__ does proper input validation. |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
643 memio = self.ioclass() |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
644 memio.__setstate__((b"no error", 0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
645 memio.__setstate__((bytearray(b"no error"), 0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
646 memio.__setstate__((b"no error", 0, {'spam': 3})) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
647 self.assertRaises(ValueError, memio.__setstate__, (b"", -1, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
648 self.assertRaises(TypeError, memio.__setstate__, ("unicode", 0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
649 self.assertRaises(TypeError, memio.__setstate__, (b"", 0.0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
650 self.assertRaises(TypeError, memio.__setstate__, (b"", 0, 0)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
651 self.assertRaises(TypeError, memio.__setstate__, (b"len-test", 0)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
652 self.assertRaises(TypeError, memio.__setstate__) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
653 self.assertRaises(TypeError, memio.__setstate__, 0) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
654 memio.close() |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
655 self.assertRaises(ValueError, memio.__setstate__, (b"closed", 0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
656 |
|
78321
1d3155750808
Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
657 check_sizeof = support.check_sizeof |
|
1d3155750808
Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
658 |
|
1d3155750808
Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
659 @support.cpython_only |
|
1d3155750808
Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
660 def test_sizeof(self): |
|
78334
e77c117ab024
Better test for BytesIO.__sizeof__, now that the struct module supports (s)size_t.
Antoine Pitrou <solipsis@pitrou.net>
parents:
78321
diff
changeset
|
661 basesize = support.calcobjsize('P2nN2Pn') |
|
78321
1d3155750808
Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
662 check = self.check_sizeof |
|
1d3155750808
Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
663 self.assertEqual(object.__sizeof__(io.BytesIO()), basesize) |
|
1d3155750808
Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
664 check(io.BytesIO(), basesize ) |
|
1d3155750808
Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
665 check(io.BytesIO(b'a'), basesize + 1 + 1 ) |
|
1d3155750808
Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
666 check(io.BytesIO(b'a' * 1000), basesize + 1000 + 1 ) |
|
1d3155750808
Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
667 |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
668 class CStringIOTest(PyStringIOTest): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
669 ioclass = io.StringIO |
|
53649
bc04cebca7e6
implement a detach() method for BufferedIOBase and TextIOBase #5883
Benjamin Peterson <benjamin@python.org>
parents:
52247
diff
changeset
|
670 UnsupportedOperation = io.UnsupportedOperation |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
671 |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
672 # XXX: For the Python version of io.StringIO, this is highly |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
673 # dependent on the encoding used for the underlying buffer. |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
674 def test_widechar(self): |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
675 buf = self.buftype("\U0002030a\U00020347") |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
676 memio = self.ioclass(buf) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
677 |
|
51991
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
678 self.assertEqual(memio.getvalue(), buf) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
679 self.assertEqual(memio.write(buf), len(buf)) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
680 self.assertEqual(memio.tell(), len(buf)) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
681 self.assertEqual(memio.getvalue(), buf) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
682 self.assertEqual(memio.write(buf), len(buf)) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
683 self.assertEqual(memio.tell(), len(buf) * 2) |
|
3049ac17e256
merge the io-c branch: C implementation of the io module
Benjamin Peterson <benjamin@python.org>
parents:
47625
diff
changeset
|
684 self.assertEqual(memio.getvalue(), buf + buf) |
|
47625
1bfea956d0d7
Issue 2918: Merge StringIO and cStringIO.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
47201
diff
changeset
|
685 |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
686 def test_getstate(self): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
687 memio = self.ioclass() |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
688 state = memio.__getstate__() |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
689 self.assertEqual(len(state), 4) |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55551
diff
changeset
|
690 self.assertIsInstance(state[0], str) |
|
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55551
diff
changeset
|
691 self.assertIsInstance(state[1], str) |
|
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55551
diff
changeset
|
692 self.assertIsInstance(state[2], int) |
|
66310
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66301
diff
changeset
|
693 self.assertTrue(isinstance(state[3], dict) or state[3] is None) |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
694 memio.close() |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
695 self.assertRaises(ValueError, memio.__getstate__) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
696 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
697 def test_setstate(self): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
698 # This checks whether __setstate__ does proper input validation. |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
699 memio = self.ioclass() |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
700 memio.__setstate__(("no error", "\n", 0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
701 memio.__setstate__(("no error", "", 0, {'spam': 3})) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
702 self.assertRaises(ValueError, memio.__setstate__, ("", "f", 0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
703 self.assertRaises(ValueError, memio.__setstate__, ("", "", -1, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
704 self.assertRaises(TypeError, memio.__setstate__, (b"", "", 0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
705 self.assertRaises(TypeError, memio.__setstate__, ("", b"", 0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
706 self.assertRaises(TypeError, memio.__setstate__, ("", "", 0.0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
707 self.assertRaises(TypeError, memio.__setstate__, ("", "", 0, 0)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
708 self.assertRaises(TypeError, memio.__setstate__, ("len-test", 0)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
709 self.assertRaises(TypeError, memio.__setstate__) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
710 self.assertRaises(TypeError, memio.__setstate__, 0) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
711 memio.close() |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
712 self.assertRaises(ValueError, memio.__setstate__, ("closed", "", 0, None)) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
713 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
714 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
715 class CStringIOPickleTest(PyStringIOPickleTest): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
716 UnsupportedOperation = io.UnsupportedOperation |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
717 |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
718 class ioclass(io.StringIO): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
719 def __new__(cls, *args, **kwargs): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
720 return pickle.loads(pickle.dumps(io.StringIO(*args, **kwargs))) |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
721 def __init__(self, *args, **kwargs): |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
722 pass |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
723 |
|
47625
1bfea956d0d7
Issue 2918: Merge StringIO and cStringIO.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
47201
diff
changeset
|
724 |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
725 def test_main(): |
|
55398
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
726 tests = [PyBytesIOTest, PyStringIOTest, CBytesIOTest, CStringIOTest, |
|
538850b38931
Issue #6218: Make io.BytesIO and io.StringIO picklable.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
55397
diff
changeset
|
727 PyStringIOPickleTest, CStringIOPickleTest] |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46724
diff
changeset
|
728 support.run_unittest(*tests) |
|
46694
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
729 |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
730 if __name__ == '__main__': |
|
cda816c3a1e4
Added fast alternate io.BytesIO implementation and its test suite.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
diff
changeset
|
731 test_main() |
