annotate Lib/test/test_memoryview.py @ 78069:a8aa77458e12 3.2

Add c_size_t and c_ssize_t to the ctypes summary table.
author Antoine Pitrou <solipsis@pitrou.net>
date Thu, 12 Jul 2012 20:31:50 +0200
parents 3c9232a684ae
children 215690b782f8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
43793
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
1 """Unit tests for the memoryview
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
2
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
3 XXX We need more tests! Some tests are in test_bytes
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
4 """
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
5
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
6 import unittest
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 43793
diff changeset
7 import test.support
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
8 import sys
48928
696f5d8419f2 #3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents: 48782
diff changeset
9 import gc
696f5d8419f2 #3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents: 48782
diff changeset
10 import weakref
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
11 import array
67676
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
12 import io
43793
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
13
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
14
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
15 class AbstractMemoryTests:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
16 source_bytes = b"abcdef"
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
17
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
18 @property
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
19 def _source(self):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
20 return self.source_bytes
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
21
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
22 @property
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
23 def _types(self):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
24 return filter(None, [self.ro_type, self.rw_type])
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
25
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
26 def check_getitem_with_type(self, tp):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
27 item = self.getitem_type
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
28 b = tp(self._source)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
29 oldrefcount = sys.getrefcount(b)
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
30 m = self._view(b)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
31 self.assertEqual(m[0], item(b"a"))
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
32 self.assertIsInstance(m[0], bytes)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
33 self.assertEqual(m[5], item(b"f"))
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
34 self.assertEqual(m[-1], item(b"f"))
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
35 self.assertEqual(m[-6], item(b"a"))
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
36 # Bounds checking
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
37 self.assertRaises(IndexError, lambda: m[6])
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
38 self.assertRaises(IndexError, lambda: m[-7])
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
39 self.assertRaises(IndexError, lambda: m[sys.maxsize])
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
40 self.assertRaises(IndexError, lambda: m[-sys.maxsize])
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
41 # Type checking
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
42 self.assertRaises(TypeError, lambda: m[None])
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
43 self.assertRaises(TypeError, lambda: m[0.0])
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
44 self.assertRaises(TypeError, lambda: m["a"])
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
45 m = None
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
46 self.assertEqual(sys.getrefcount(b), oldrefcount)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
47
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
48 def test_getitem(self):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
49 for tp in self._types:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
50 self.check_getitem_with_type(tp)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
51
54828
b4d0c020e357 Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents: 50490
diff changeset
52 def test_iter(self):
b4d0c020e357 Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents: 50490
diff changeset
53 for tp in self._types:
b4d0c020e357 Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents: 50490
diff changeset
54 b = tp(self._source)
b4d0c020e357 Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents: 50490
diff changeset
55 m = self._view(b)
b4d0c020e357 Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents: 50490
diff changeset
56 self.assertEqual(list(m), [m[i] for i in range(len(m))])
b4d0c020e357 Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents: 50490
diff changeset
57
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
58 def test_setitem_readonly(self):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
59 if not self.ro_type:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
60 return
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
61 b = self.ro_type(self._source)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
62 oldrefcount = sys.getrefcount(b)
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
63 m = self._view(b)
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
64 def setitem(value):
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
65 m[0] = value
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
66 self.assertRaises(TypeError, setitem, b"a")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
67 self.assertRaises(TypeError, setitem, 65)
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
68 self.assertRaises(TypeError, setitem, memoryview(b"a"))
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
69 m = None
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
70 self.assertEqual(sys.getrefcount(b), oldrefcount)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
71
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
72 def test_setitem_writable(self):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
73 if not self.rw_type:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
74 return
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
75 tp = self.rw_type
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
76 b = self.rw_type(self._source)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
77 oldrefcount = sys.getrefcount(b)
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
78 m = self._view(b)
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
79 m[0] = tp(b"0")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
80 self._check_contents(tp, b, b"0bcdef")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
81 m[1:3] = tp(b"12")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
82 self._check_contents(tp, b, b"012def")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
83 m[1:1] = tp(b"")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
84 self._check_contents(tp, b, b"012def")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
85 m[:] = tp(b"abcdef")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
86 self._check_contents(tp, b, b"abcdef")
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
87
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
88 # Overlapping copies of a view into itself
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
89 m[0:3] = m[2:5]
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
90 self._check_contents(tp, b, b"cdedef")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
91 m[:] = tp(b"abcdef")
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
92 m[2:5] = m[0:3]
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
93 self._check_contents(tp, b, b"ababcf")
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
94
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
95 def setitem(key, value):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
96 m[key] = tp(value)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
97 # Bounds checking
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
98 self.assertRaises(IndexError, setitem, 6, b"a")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
99 self.assertRaises(IndexError, setitem, -7, b"a")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
100 self.assertRaises(IndexError, setitem, sys.maxsize, b"a")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
101 self.assertRaises(IndexError, setitem, -sys.maxsize, b"a")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
102 # Wrong index/slice types
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
103 self.assertRaises(TypeError, setitem, 0.0, b"a")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
104 self.assertRaises(TypeError, setitem, (0,), b"a")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
105 self.assertRaises(TypeError, setitem, "a", b"a")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
106 # Trying to resize the memory object
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
107 self.assertRaises(ValueError, setitem, 0, b"")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
108 self.assertRaises(ValueError, setitem, 0, b"ab")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
109 self.assertRaises(ValueError, setitem, slice(1,1), b"a")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
110 self.assertRaises(ValueError, setitem, slice(0,2), b"a")
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
111
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
112 m = None
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
113 self.assertEqual(sys.getrefcount(b), oldrefcount)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
114
64362
4547b1491169 Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
115 def test_delitem(self):
4547b1491169 Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
116 for tp in self._types:
4547b1491169 Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
117 b = tp(self._source)
4547b1491169 Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
118 m = self._view(b)
4547b1491169 Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
119 with self.assertRaises(TypeError):
4547b1491169 Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
120 del m[1]
4547b1491169 Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
121 with self.assertRaises(TypeError):
4547b1491169 Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
122 del m[1:4]
4547b1491169 Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
123
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
124 def test_tobytes(self):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
125 for tp in self._types:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
126 m = self._view(tp(self._source))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
127 b = m.tobytes()
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
128 # This calls self.getitem_type() on each separate byte of b"abcdef"
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
129 expected = b"".join(
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
130 self.getitem_type(bytes([c])) for c in b"abcdef")
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
131 self.assertEqual(b, expected)
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
132 self.assertIsInstance(b, bytes)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
133
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
134 def test_tolist(self):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
135 for tp in self._types:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
136 m = self._view(tp(self._source))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
137 l = m.tolist()
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
138 self.assertEqual(l, list(b"abcdef"))
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
139
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
140 def test_compare(self):
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
141 # memoryviews can compare for equality with other objects
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
142 # having the buffer interface.
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
143 for tp in self._types:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
144 m = self._view(tp(self._source))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
145 for tp_comp in self._types:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
146 self.assertTrue(m == tp_comp(b"abcdef"))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
147 self.assertFalse(m != tp_comp(b"abcdef"))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
148 self.assertFalse(m == tp_comp(b"abcde"))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
149 self.assertTrue(m != tp_comp(b"abcde"))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
150 self.assertFalse(m == tp_comp(b"abcde1"))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
151 self.assertTrue(m != tp_comp(b"abcde1"))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
152 self.assertTrue(m == m)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
153 self.assertTrue(m == m[:])
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
154 self.assertTrue(m[0:6] == m[:])
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
155 self.assertFalse(m[0:5] == m)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
156
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
157 # Comparison with objects which don't support the buffer API
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
158 self.assertFalse(m == "abcdef")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
159 self.assertTrue(m != "abcdef")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
160 self.assertFalse("abcdef" == m)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
161 self.assertTrue("abcdef" != m)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
162
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
163 # Unordered comparisons
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
164 for c in (m, b"abcdef"):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
165 self.assertRaises(TypeError, lambda: m < c)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
166 self.assertRaises(TypeError, lambda: c <= m)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
167 self.assertRaises(TypeError, lambda: m >= c)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
168 self.assertRaises(TypeError, lambda: c > m)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
169
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
170 def check_attributes_with_type(self, tp):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
171 m = self._view(tp(self._source))
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
172 self.assertEqual(m.format, self.format)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
173 self.assertEqual(m.itemsize, self.itemsize)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
174 self.assertEqual(m.ndim, 1)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
175 self.assertEqual(m.shape, (6,))
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
176 self.assertEqual(len(m), 6)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
177 self.assertEqual(m.strides, (self.itemsize,))
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
178 self.assertEqual(m.suboffsets, None)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
179 return m
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
180
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
181 def test_attributes_readonly(self):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
182 if not self.ro_type:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
183 return
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
184 m = self.check_attributes_with_type(self.ro_type)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
185 self.assertEqual(m.readonly, True)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
186
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
187 def test_attributes_writable(self):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
188 if not self.rw_type:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
189 return
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
190 m = self.check_attributes_with_type(self.rw_type)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
191 self.assertEqual(m.readonly, False)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
192
48928
696f5d8419f2 #3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents: 48782
diff changeset
193 def test_getbuffer(self):
696f5d8419f2 #3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents: 48782
diff changeset
194 # Test PyObject_GetBuffer() on a memoryview object.
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
195 for tp in self._types:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
196 b = tp(self._source)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
197 oldrefcount = sys.getrefcount(b)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
198 m = self._view(b)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
199 oldviewrefcount = sys.getrefcount(m)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
200 s = str(m, "utf-8")
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
201 self._check_contents(tp, b, s.encode("utf-8"))
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
202 self.assertEqual(sys.getrefcount(m), oldviewrefcount)
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
203 m = None
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
204 self.assertEqual(sys.getrefcount(b), oldrefcount)
48928
696f5d8419f2 #3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents: 48782
diff changeset
205
696f5d8419f2 #3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents: 48782
diff changeset
206 def test_gc(self):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
207 for tp in self._types:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
208 if not isinstance(tp, type):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
209 # If tp is a factory rather than a plain type, skip
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
210 continue
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
211
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
212 class MySource(tp):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
213 pass
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
214 class MyObject:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
215 pass
48928
696f5d8419f2 #3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents: 48782
diff changeset
216
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
217 # Create a reference cycle through a memoryview object
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
218 b = MySource(tp(b'abc'))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
219 m = self._view(b)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
220 o = MyObject()
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
221 b.m = m
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
222 b.o = o
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
223 wr = weakref.ref(o)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
224 b = m = o = None
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
225 # The cycle must be broken
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
226 gc.collect()
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54828
diff changeset
227 self.assertTrue(wr() is None, wr())
48928
696f5d8419f2 #3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents: 48782
diff changeset
228
64584
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
229 def _check_released(self, m, tp):
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66310
diff changeset
230 check = self.assertRaisesRegex(ValueError, "released")
64584
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
231 with check: bytes(m)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
232 with check: m.tobytes()
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
233 with check: m.tolist()
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
234 with check: m[0]
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
235 with check: m[0] = b'x'
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
236 with check: len(m)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
237 with check: m.format
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
238 with check: m.itemsize
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
239 with check: m.ndim
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
240 with check: m.readonly
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
241 with check: m.shape
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
242 with check: m.strides
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
243 with check:
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
244 with m:
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
245 pass
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
246 # str() and repr() still function
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
247 self.assertIn("released memory", str(m))
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
248 self.assertIn("released memory", repr(m))
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
249 self.assertEqual(m, m)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
250 self.assertNotEqual(m, memoryview(tp(self._source)))
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
251 self.assertNotEqual(m, tp(self._source))
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
252
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
253 def test_contextmanager(self):
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
254 for tp in self._types:
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
255 b = tp(self._source)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
256 m = self._view(b)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
257 with m as cm:
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
258 self.assertIs(cm, m)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
259 self._check_released(m, tp)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
260 m = self._view(b)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
261 # Can release explicitly inside the context manager
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
262 with m:
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
263 m.release()
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
264
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
265 def test_release(self):
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
266 for tp in self._types:
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
267 b = tp(self._source)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
268 m = self._view(b)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
269 m.release()
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
270 self._check_released(m, tp)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
271 # Can be called a second time (it's a no-op)
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
272 m.release()
ba54096b7a42 Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents: 64360
diff changeset
273 self._check_released(m, tp)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
274
67676
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
275 def test_writable_readonly(self):
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
276 # Issue #10451: memoryview incorrectly exposes a readonly
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
277 # buffer as writable causing a segfault if using mmap
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
278 tp = self.ro_type
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
279 if tp is None:
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
280 return
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
281 b = tp(self._source)
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
282 m = self._view(b)
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
283 i = io.BytesIO(b'ZZZZ')
2fde5abfb5f1 Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66340
diff changeset
284 self.assertRaises(TypeError, i.readinto, m)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
285
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
286 # Variations on source objects for the buffer: bytes-like objects, then arrays
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
287 # with itemsize > 1.
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
288 # NOTE: support for multi-dimensional objects is unimplemented.
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
289
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
290 class BaseBytesMemoryTests(AbstractMemoryTests):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
291 ro_type = bytes
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
292 rw_type = bytearray
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
293 getitem_type = bytes
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
294 itemsize = 1
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
295 format = 'B'
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
296
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
297 class BaseArrayMemoryTests(AbstractMemoryTests):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
298 ro_type = None
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
299 rw_type = lambda self, b: array.array('i', list(b))
64355
fa8b57f987c5 Issue #8990: array.fromstring() and array.tostring() get renamed to
Antoine Pitrou <solipsis@pitrou.net>
parents: 58473
diff changeset
300 getitem_type = lambda self, b: array.array('i', list(b)).tobytes()
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
301 itemsize = array.array('i').itemsize
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
302 format = 'i'
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
303
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
304 def test_getbuffer(self):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
305 # XXX Test should be adapted for non-byte buffers
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
306 pass
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
307
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
308 def test_tolist(self):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
309 # XXX NotImplementedError: tolist() only supports byte views
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
310 pass
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
311
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
312
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
313 # Variations on indirection levels: memoryview, slice of memoryview,
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
314 # slice of slice of memoryview.
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
315 # This is important to test allocation subtleties.
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
316
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
317 class BaseMemoryviewTests:
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
318 def _view(self, obj):
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
319 return memoryview(obj)
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
320
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
321 def _check_contents(self, tp, obj, contents):
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
322 self.assertEqual(obj, tp(contents))
43793
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
323
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
324 class BaseMemorySliceTests:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
325 source_bytes = b"XabcdefY"
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
326
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
327 def _view(self, obj):
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
328 m = memoryview(obj)
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
329 return m[1:7]
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
330
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
331 def _check_contents(self, tp, obj, contents):
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
332 self.assertEqual(obj[1:7], tp(contents))
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
333
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
334 def test_refs(self):
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
335 for tp in self._types:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
336 m = memoryview(tp(self._source))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
337 oldrefcount = sys.getrefcount(m)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
338 m[1:2]
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
339 self.assertEqual(sys.getrefcount(m), oldrefcount)
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
340
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
341 class BaseMemorySliceSliceTests:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
342 source_bytes = b"XabcdefY"
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
343
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
344 def _view(self, obj):
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
345 m = memoryview(obj)
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
346 return m[:7][1:]
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
347
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
348 def _check_contents(self, tp, obj, contents):
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
349 self.assertEqual(obj[1:7], tp(contents))
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
350
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
351
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
352 # Concrete test classes
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
353
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
354 class BytesMemoryviewTest(unittest.TestCase,
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
355 BaseMemoryviewTests, BaseBytesMemoryTests):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
356
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
357 def test_constructor(self):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
358 for tp in self._types:
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
359 ob = tp(self._source)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54828
diff changeset
360 self.assertTrue(memoryview(ob))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54828
diff changeset
361 self.assertTrue(memoryview(object=ob))
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
362 self.assertRaises(TypeError, memoryview)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
363 self.assertRaises(TypeError, memoryview, ob, ob)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
364 self.assertRaises(TypeError, memoryview, argument=ob)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
365 self.assertRaises(TypeError, memoryview, ob, argument=True)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
366
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
367 class ArrayMemoryviewTest(unittest.TestCase,
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
368 BaseMemoryviewTests, BaseArrayMemoryTests):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
369
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
370 def test_array_assign(self):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
371 # Issue #4569: segfault when mutating a memoryview with itemsize != 1
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
372 a = array.array('i', range(10))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
373 m = memoryview(a)
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
374 new_a = array.array('i', range(9, -1, -1))
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
375 m[:] = new_a
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64362
diff changeset
376 self.assertEqual(a, new_a)
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
377
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
378
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
379 class BytesMemorySliceTest(unittest.TestCase,
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
380 BaseMemorySliceTests, BaseBytesMemoryTests):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
381 pass
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
382
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
383 class ArrayMemorySliceTest(unittest.TestCase,
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
384 BaseMemorySliceTests, BaseArrayMemoryTests):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
385 pass
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
386
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
387 class BytesMemorySliceSliceTest(unittest.TestCase,
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
388 BaseMemorySliceSliceTests, BaseBytesMemoryTests):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
389 pass
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
390
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
391 class ArrayMemorySliceSliceTest(unittest.TestCase,
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
392 BaseMemorySliceSliceTests, BaseArrayMemoryTests):
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
393 pass
48782
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
394
501256c54c84 Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents: 47201
diff changeset
395
43793
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
396 def test_main():
50490
26045ed0c26e Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 50083
diff changeset
397 test.support.run_unittest(__name__)
43793
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
398
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
399 if __name__ == "__main__":
2d8d6855a602 Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
400 test_main()