OLD | NEW |
1 """Unit tests for memory-based file-like objects. | 1 """Unit tests for memory-based file-like objects. |
2 StringIO -- for unicode strings | 2 StringIO -- for unicode strings |
3 BytesIO -- for bytes | 3 BytesIO -- for bytes |
4 """ | 4 """ |
5 | 5 |
6 import unittest | 6 import unittest |
7 from test import support | 7 from test import support |
8 | 8 |
9 import io | 9 import io |
10 import _pyio as pyio | 10 import _pyio as pyio |
11 import pickle | 11 import pickle |
12 | 12 |
13 class MemorySeekTestMixin: | 13 class MemorySeekTestMixin: |
14 | 14 |
15 def testInit(self): | 15 def testInit(self): |
16 buf = self.buftype("1234567890") | 16 buf = self.buftype("1234567890") |
17 bytesIo = self.ioclass(buf) | 17 bytesIo = self.ioclass(buf) |
18 | 18 |
19 def testRead(self): | 19 def testRead(self): |
20 buf = self.buftype("1234567890") | 20 buf = self.buftype("1234567890") |
21 bytesIo = self.ioclass(buf) | 21 bytesIo = self.ioclass(buf) |
22 | 22 |
23 self.assertEquals(buf[:1], bytesIo.read(1)) | 23 self.assertEqual(buf[:1], bytesIo.read(1)) |
24 self.assertEquals(buf[1:5], bytesIo.read(4)) | 24 self.assertEqual(buf[1:5], bytesIo.read(4)) |
25 self.assertEquals(buf[5:], bytesIo.read(900)) | 25 self.assertEqual(buf[5:], bytesIo.read(900)) |
26 self.assertEquals(self.EOF, bytesIo.read()) | 26 self.assertEqual(self.EOF, bytesIo.read()) |
27 | 27 |
28 def testReadNoArgs(self): | 28 def testReadNoArgs(self): |
29 buf = self.buftype("1234567890") | 29 buf = self.buftype("1234567890") |
30 bytesIo = self.ioclass(buf) | 30 bytesIo = self.ioclass(buf) |
31 | 31 |
32 self.assertEquals(buf, bytesIo.read()) | 32 self.assertEqual(buf, bytesIo.read()) |
33 self.assertEquals(self.EOF, bytesIo.read()) | 33 self.assertEqual(self.EOF, bytesIo.read()) |
34 | 34 |
35 def testSeek(self): | 35 def testSeek(self): |
36 buf = self.buftype("1234567890") | 36 buf = self.buftype("1234567890") |
37 bytesIo = self.ioclass(buf) | 37 bytesIo = self.ioclass(buf) |
38 | 38 |
39 bytesIo.read(5) | 39 bytesIo.read(5) |
40 bytesIo.seek(0) | 40 bytesIo.seek(0) |
41 self.assertEquals(buf, bytesIo.read()) | 41 self.assertEqual(buf, bytesIo.read()) |
42 | 42 |
43 bytesIo.seek(3) | 43 bytesIo.seek(3) |
44 self.assertEquals(buf[3:], bytesIo.read()) | 44 self.assertEqual(buf[3:], bytesIo.read()) |
45 self.assertRaises(TypeError, bytesIo.seek, 0.0) | 45 self.assertRaises(TypeError, bytesIo.seek, 0.0) |
46 | 46 |
47 def testTell(self): | 47 def testTell(self): |
48 buf = self.buftype("1234567890") | 48 buf = self.buftype("1234567890") |
49 bytesIo = self.ioclass(buf) | 49 bytesIo = self.ioclass(buf) |
50 | 50 |
51 self.assertEquals(0, bytesIo.tell()) | 51 self.assertEqual(0, bytesIo.tell()) |
52 bytesIo.seek(5) | 52 bytesIo.seek(5) |
53 self.assertEquals(5, bytesIo.tell()) | 53 self.assertEqual(5, bytesIo.tell()) |
54 bytesIo.seek(10000) | 54 bytesIo.seek(10000) |
55 self.assertEquals(10000, bytesIo.tell()) | 55 self.assertEqual(10000, bytesIo.tell()) |
56 | 56 |
57 | 57 |
58 class MemoryTestMixin: | 58 class MemoryTestMixin: |
59 | 59 |
60 def test_detach(self): | 60 def test_detach(self): |
61 buf = self.ioclass() | 61 buf = self.ioclass() |
62 self.assertRaises(self.UnsupportedOperation, buf.detach) | 62 self.assertRaises(self.UnsupportedOperation, buf.detach) |
63 | 63 |
64 def write_ops(self, f, t): | 64 def write_ops(self, f, t): |
65 self.assertEqual(f.write(t("blah.")), 5) | 65 self.assertEqual(f.write(t("blah.")), 5) |
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 class CBytesIOTest(PyBytesIOTest): | 622 class CBytesIOTest(PyBytesIOTest): |
623 ioclass = io.BytesIO | 623 ioclass = io.BytesIO |
624 UnsupportedOperation = io.UnsupportedOperation | 624 UnsupportedOperation = io.UnsupportedOperation |
625 | 625 |
626 def test_getstate(self): | 626 def test_getstate(self): |
627 memio = self.ioclass() | 627 memio = self.ioclass() |
628 state = memio.__getstate__() | 628 state = memio.__getstate__() |
629 self.assertEqual(len(state), 3) | 629 self.assertEqual(len(state), 3) |
630 bytearray(state[0]) # Check if state[0] supports the buffer interface. | 630 bytearray(state[0]) # Check if state[0] supports the buffer interface. |
631 self.assertIsInstance(state[1], int) | 631 self.assertIsInstance(state[1], int) |
632 self.assert_(isinstance(state[2], dict) or state[2] is None) | 632 self.assertTrue(isinstance(state[2], dict) or state[2] is None) |
633 memio.close() | 633 memio.close() |
634 self.assertRaises(ValueError, memio.__getstate__) | 634 self.assertRaises(ValueError, memio.__getstate__) |
635 | 635 |
636 def test_setstate(self): | 636 def test_setstate(self): |
637 # This checks whether __setstate__ does proper input validation. | 637 # This checks whether __setstate__ does proper input validation. |
638 memio = self.ioclass() | 638 memio = self.ioclass() |
639 memio.__setstate__((b"no error", 0, None)) | 639 memio.__setstate__((b"no error", 0, None)) |
640 memio.__setstate__((bytearray(b"no error"), 0, None)) | 640 memio.__setstate__((bytearray(b"no error"), 0, None)) |
641 memio.__setstate__((b"no error", 0, {'spam': 3})) | 641 memio.__setstate__((b"no error", 0, {'spam': 3})) |
642 self.assertRaises(ValueError, memio.__setstate__, (b"", -1, None)) | 642 self.assertRaises(ValueError, memio.__setstate__, (b"", -1, None)) |
(...skipping 25 matching lines...) Expand all Loading... |
668 self.assertEqual(memio.tell(), len(buf) * 2) | 668 self.assertEqual(memio.tell(), len(buf) * 2) |
669 self.assertEqual(memio.getvalue(), buf + buf) | 669 self.assertEqual(memio.getvalue(), buf + buf) |
670 | 670 |
671 def test_getstate(self): | 671 def test_getstate(self): |
672 memio = self.ioclass() | 672 memio = self.ioclass() |
673 state = memio.__getstate__() | 673 state = memio.__getstate__() |
674 self.assertEqual(len(state), 4) | 674 self.assertEqual(len(state), 4) |
675 self.assertIsInstance(state[0], str) | 675 self.assertIsInstance(state[0], str) |
676 self.assertIsInstance(state[1], str) | 676 self.assertIsInstance(state[1], str) |
677 self.assertIsInstance(state[2], int) | 677 self.assertIsInstance(state[2], int) |
678 self.assert_(isinstance(state[3], dict) or state[3] is None) | 678 self.assertTrue(isinstance(state[3], dict) or state[3] is None) |
679 memio.close() | 679 memio.close() |
680 self.assertRaises(ValueError, memio.__getstate__) | 680 self.assertRaises(ValueError, memio.__getstate__) |
681 | 681 |
682 def test_setstate(self): | 682 def test_setstate(self): |
683 # This checks whether __setstate__ does proper input validation. | 683 # This checks whether __setstate__ does proper input validation. |
684 memio = self.ioclass() | 684 memio = self.ioclass() |
685 memio.__setstate__(("no error", "\n", 0, None)) | 685 memio.__setstate__(("no error", "\n", 0, None)) |
686 memio.__setstate__(("no error", "", 0, {'spam': 3})) | 686 memio.__setstate__(("no error", "", 0, {'spam': 3})) |
687 self.assertRaises(ValueError, memio.__setstate__, ("", "f", 0, None)) | 687 self.assertRaises(ValueError, memio.__setstate__, ("", "f", 0, None)) |
688 self.assertRaises(ValueError, memio.__setstate__, ("", "", -1, None)) | 688 self.assertRaises(ValueError, memio.__setstate__, ("", "", -1, None)) |
(...skipping 18 matching lines...) Expand all Loading... |
707 pass | 707 pass |
708 | 708 |
709 | 709 |
710 def test_main(): | 710 def test_main(): |
711 tests = [PyBytesIOTest, PyStringIOTest, CBytesIOTest, CStringIOTest, | 711 tests = [PyBytesIOTest, PyStringIOTest, CBytesIOTest, CStringIOTest, |
712 PyStringIOPickleTest, CStringIOPickleTest] | 712 PyStringIOPickleTest, CStringIOPickleTest] |
713 support.run_unittest(*tests) | 713 support.run_unittest(*tests) |
714 | 714 |
715 if __name__ == '__main__': | 715 if __name__ == '__main__': |
716 test_main() | 716 test_main() |
OLD | NEW |