Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_memoryview.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 | 0dc604d58949 |
| children |
| 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 |
|
78650
ccaf827bbf4c
Fix out-of-date comment in test_memoryview.
Stefan Krah <skrah@bytereef.org>
parents:
77213
diff
changeset
|
3 Some tests are in test_bytes. Many tests that require _testbuffer.ndarray |
|
ccaf827bbf4c
Fix out-of-date comment in test_memoryview.
Stefan Krah <skrah@bytereef.org>
parents:
77213
diff
changeset
|
4 are in test_buffer. |
|
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
|
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 |
|
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
|
7 import unittest |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
43793
diff
changeset
|
8 import test.support |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
9 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
|
10 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
|
11 import weakref |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
12 import array |
|
67676
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
13 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
|
14 |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
15 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
16 class AbstractMemoryTests: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
17 source_bytes = b"abcdef" |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
18 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
19 @property |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
20 def _source(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
21 return self.source_bytes |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
22 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
23 @property |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
24 def _types(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
25 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
|
26 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
27 def check_getitem_with_type(self, tp): |
|
50490
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) |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
31 self.assertEqual(m[0], ord(b"a")) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
32 self.assertIsInstance(m[0], int) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
33 self.assertEqual(m[5], ord(b"f")) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
34 self.assertEqual(m[-1], ord(b"f")) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
35 self.assertEqual(m[-6], ord(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) |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
79 m[0] = ord(b'1') |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
80 self._check_contents(tp, b, b"1bcdef") |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
81 m[0:1] = tp(b"0") |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
82 self._check_contents(tp, b, b"0bcdef") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
83 m[1:3] = tp(b"12") |
|
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[1:1] = tp(b"") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
86 self._check_contents(tp, b, b"012def") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
87 m[:] = tp(b"abcdef") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
88 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
|
89 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
90 # 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
|
91 m[0:3] = m[2:5] |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
92 self._check_contents(tp, b, b"cdedef") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
93 m[:] = tp(b"abcdef") |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
94 m[2:5] = m[0:3] |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
95 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
|
96 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
97 def setitem(key, value): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
98 m[key] = tp(value) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
99 # Bounds checking |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
100 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
|
101 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
|
102 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
|
103 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
|
104 # Wrong index/slice types |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
105 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
|
106 self.assertRaises(TypeError, setitem, (0,), b"a") |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
107 self.assertRaises(TypeError, setitem, (slice(0,1,1), 0), b"a") |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
108 self.assertRaises(TypeError, setitem, (0, slice(0,1,1)), b"a") |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
109 self.assertRaises(TypeError, setitem, (0,), b"a") |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
110 self.assertRaises(TypeError, setitem, "a", b"a") |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
111 # Not implemented: multidimensional slices |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
112 slices = (slice(0,1,1), slice(0,1,2)) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
113 self.assertRaises(NotImplementedError, setitem, slices, b"a") |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
114 # Trying to resize the memory object |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
115 exc = ValueError if m.format == 'c' else TypeError |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
116 self.assertRaises(exc, setitem, 0, b"") |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
117 self.assertRaises(exc, setitem, 0, b"ab") |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
118 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
|
119 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
|
120 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
121 m = None |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
122 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
|
123 |
|
64362
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
124 def test_delitem(self): |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
125 for tp in self._types: |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
126 b = tp(self._source) |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
127 m = self._view(b) |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
128 with self.assertRaises(TypeError): |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
129 del m[1] |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
130 with self.assertRaises(TypeError): |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
131 del m[1:4] |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
132 |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
133 def test_tobytes(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
134 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
135 m = self._view(tp(self._source)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
136 b = m.tobytes() |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
137 # 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
|
138 expected = b"".join( |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
139 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
|
140 self.assertEqual(b, expected) |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
141 self.assertIsInstance(b, bytes) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
142 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
143 def test_tolist(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
144 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
145 m = self._view(tp(self._source)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
146 l = m.tolist() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
147 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
|
148 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
149 def test_compare(self): |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
150 # 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
|
151 # having the buffer interface. |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
152 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
153 m = self._view(tp(self._source)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
154 for tp_comp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
155 self.assertTrue(m == tp_comp(b"abcdef")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
156 self.assertFalse(m != tp_comp(b"abcdef")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
157 self.assertFalse(m == tp_comp(b"abcde")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
158 self.assertTrue(m != tp_comp(b"abcde")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
159 self.assertFalse(m == tp_comp(b"abcde1")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
160 self.assertTrue(m != tp_comp(b"abcde1")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
161 self.assertTrue(m == m) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
162 self.assertTrue(m == m[:]) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
163 self.assertTrue(m[0:6] == m[:]) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
164 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
|
165 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
166 # 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
|
167 self.assertFalse(m == "abcdef") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
168 self.assertTrue(m != "abcdef") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
169 self.assertFalse("abcdef" == m) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
170 self.assertTrue("abcdef" != m) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
171 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
172 # Unordered comparisons |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
173 for c in (m, b"abcdef"): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
174 self.assertRaises(TypeError, lambda: m < c) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
175 self.assertRaises(TypeError, lambda: c <= m) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
176 self.assertRaises(TypeError, lambda: m >= c) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
177 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
|
178 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
179 def check_attributes_with_type(self, tp): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
180 m = self._view(tp(self._source)) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
181 self.assertEqual(m.format, self.format) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
182 self.assertEqual(m.itemsize, self.itemsize) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
183 self.assertEqual(m.ndim, 1) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
184 self.assertEqual(m.shape, (6,)) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
185 self.assertEqual(len(m), 6) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
186 self.assertEqual(m.strides, (self.itemsize,)) |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
187 self.assertEqual(m.suboffsets, ()) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
188 return m |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
189 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
190 def test_attributes_readonly(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
191 if not self.ro_type: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
192 return |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
193 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
|
194 self.assertEqual(m.readonly, True) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
195 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
196 def test_attributes_writable(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
197 if not self.rw_type: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
198 return |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
199 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
|
200 self.assertEqual(m.readonly, False) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
201 |
|
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
|
202 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
|
203 # Test PyObject_GetBuffer() on a memoryview object. |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
204 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
205 b = tp(self._source) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
206 oldrefcount = sys.getrefcount(b) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
207 m = self._view(b) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
208 oldviewrefcount = sys.getrefcount(m) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
209 s = str(m, "utf-8") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
210 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
|
211 self.assertEqual(sys.getrefcount(m), oldviewrefcount) |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
212 m = None |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
213 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
|
214 |
|
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
|
215 def test_gc(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
216 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
217 if not isinstance(tp, type): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
218 # 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
|
219 continue |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
220 |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
221 class MyView(): |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
222 def __init__(self, base): |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
223 self.m = memoryview(base) |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
224 class MySource(tp): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
225 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
226 class MyObject: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
227 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
|
228 |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
229 # Create a reference cycle through a memoryview object. |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
230 # This exercises mbuf_clear(). |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
231 b = MySource(tp(b'abc')) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
232 m = self._view(b) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
233 o = MyObject() |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
234 b.m = m |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
235 b.o = o |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
236 wr = weakref.ref(o) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
237 b = m = o = None |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
238 # The cycle must be broken |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
239 gc.collect() |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54828
diff
changeset
|
240 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
|
241 |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
242 # This exercises memory_clear(). |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
243 m = MyView(tp(b'abc')) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
244 o = MyObject() |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
245 m.x = m |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
246 m.o = o |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
247 wr = weakref.ref(o) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
248 m = o = None |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
249 # The cycle must be broken |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
250 gc.collect() |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
251 self.assertTrue(wr() is None, wr()) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
252 |
|
64584
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
253 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
|
254 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
|
255 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
|
256 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
|
257 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
|
258 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
|
259 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
|
260 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
|
261 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
|
262 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
|
263 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
|
264 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
|
265 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
|
266 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
|
267 with check: |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
268 with m: |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
269 pass |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
270 # 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
|
271 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
|
272 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
|
273 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
|
274 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
|
275 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
|
276 |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
277 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
|
278 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
|
279 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
|
280 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
|
281 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
|
282 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
|
283 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
|
284 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
|
285 # 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
|
286 with m: |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
287 m.release() |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
288 |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
289 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
|
290 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
|
291 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
|
292 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
|
293 m.release() |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
294 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
|
295 # 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
|
296 m.release() |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
297 self._check_released(m, tp) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
298 |
|
67676
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
299 def test_writable_readonly(self): |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
300 # Issue #10451: memoryview incorrectly exposes a readonly |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
301 # 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
|
302 tp = self.ro_type |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
303 if tp is None: |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
304 return |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
305 b = tp(self._source) |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
306 m = self._view(b) |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
307 i = io.BytesIO(b'ZZZZ') |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
308 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
|
309 |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
310 def test_getbuf_fail(self): |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
311 self.assertRaises(TypeError, self._view, {}) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
312 |
|
73669
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
313 def test_hash(self): |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
314 # Memoryviews of readonly (hashable) types are hashable, and they |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
315 # hash as hash(obj.tobytes()). |
|
73669
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
316 tp = self.ro_type |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
317 if tp is None: |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
318 self.skipTest("no read-only type to test") |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
319 b = tp(self._source) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
320 m = self._view(b) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
321 self.assertEqual(hash(m), hash(b"abcdef")) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
322 # Releasing the memoryview keeps the stored hash value (as with weakrefs) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
323 m.release() |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
324 self.assertEqual(hash(m), hash(b"abcdef")) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
325 # Hashing a memoryview for the first time after it is released |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
326 # results in an error (as with weakrefs). |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
327 m = self._view(b) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
328 m.release() |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
329 self.assertRaises(ValueError, hash, m) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
330 |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
331 def test_hash_writable(self): |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
332 # Memoryviews of writable types are unhashable |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
333 tp = self.rw_type |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
334 if tp is None: |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
335 self.skipTest("no writable type to test") |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
336 b = tp(self._source) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
337 m = self._view(b) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
338 self.assertRaises(ValueError, hash, m) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
339 |
|
77213
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
340 def test_weakref(self): |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
341 # Check memoryviews are weakrefable |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
342 for tp in self._types: |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
343 b = tp(self._source) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
344 m = self._view(b) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
345 L = [] |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
346 def callback(wr, b=b): |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
347 L.append(b) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
348 wr = weakref.ref(m, callback) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
349 self.assertIs(wr(), m) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
350 del m |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
351 test.support.gc_collect() |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
352 self.assertIs(wr(), None) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
353 self.assertIs(L[0], b) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
354 |
|
85923
0dc604d58949
Close #19078: memoryview now supports reversed
Nick Coghlan <ncoghlan@gmail.com>
parents:
78650
diff
changeset
|
355 def test_reversed(self): |
|
0dc604d58949
Close #19078: memoryview now supports reversed
Nick Coghlan <ncoghlan@gmail.com>
parents:
78650
diff
changeset
|
356 for tp in self._types: |
|
0dc604d58949
Close #19078: memoryview now supports reversed
Nick Coghlan <ncoghlan@gmail.com>
parents:
78650
diff
changeset
|
357 b = tp(self._source) |
|
0dc604d58949
Close #19078: memoryview now supports reversed
Nick Coghlan <ncoghlan@gmail.com>
parents:
78650
diff
changeset
|
358 m = self._view(b) |
|
0dc604d58949
Close #19078: memoryview now supports reversed
Nick Coghlan <ncoghlan@gmail.com>
parents:
78650
diff
changeset
|
359 aslist = list(reversed(m.tolist())) |
|
0dc604d58949
Close #19078: memoryview now supports reversed
Nick Coghlan <ncoghlan@gmail.com>
parents:
78650
diff
changeset
|
360 self.assertEqual(list(reversed(m)), aslist) |
|
0dc604d58949
Close #19078: memoryview now supports reversed
Nick Coghlan <ncoghlan@gmail.com>
parents:
78650
diff
changeset
|
361 self.assertEqual(list(reversed(m)), list(m[::-1])) |
|
0dc604d58949
Close #19078: memoryview now supports reversed
Nick Coghlan <ncoghlan@gmail.com>
parents:
78650
diff
changeset
|
362 |
|
0dc604d58949
Close #19078: memoryview now supports reversed
Nick Coghlan <ncoghlan@gmail.com>
parents:
78650
diff
changeset
|
363 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
364 # 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
|
365 # with itemsize > 1. |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
366 # NOTE: support for multi-dimensional objects is unimplemented. |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
367 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
368 class BaseBytesMemoryTests(AbstractMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
369 ro_type = bytes |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
370 rw_type = bytearray |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
371 getitem_type = bytes |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
372 itemsize = 1 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
373 format = 'B' |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
374 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
375 class BaseArrayMemoryTests(AbstractMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
376 ro_type = None |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
377 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
|
378 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
|
379 itemsize = array.array('i').itemsize |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
380 format = 'i' |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
381 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
382 def test_getbuffer(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
383 # 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
|
384 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
385 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
386 def test_tolist(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
387 # XXX NotImplementedError: tolist() only supports byte views |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
388 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
389 |
|
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 # Variations on indirection levels: memoryview, slice of memoryview, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
392 # slice of slice of memoryview. |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
393 # This is important to test allocation subtleties. |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
394 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
395 class BaseMemoryviewTests: |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
396 def _view(self, obj): |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
397 return memoryview(obj) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
398 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
399 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
|
400 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
|
401 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
402 class BaseMemorySliceTests: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
403 source_bytes = b"XabcdefY" |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
404 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
405 def _view(self, obj): |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
406 m = memoryview(obj) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
407 return m[1:7] |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
408 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
409 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
|
410 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
|
411 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
412 def test_refs(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
413 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
414 m = memoryview(tp(self._source)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
415 oldrefcount = sys.getrefcount(m) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
416 m[1:2] |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
417 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
|
418 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
419 class BaseMemorySliceSliceTests: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
420 source_bytes = b"XabcdefY" |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
421 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
422 def _view(self, obj): |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
423 m = memoryview(obj) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
424 return m[:7][1:] |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
425 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
426 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
|
427 self.assertEqual(obj[1:7], tp(contents)) |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
428 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
429 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
430 # Concrete test classes |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
431 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
432 class BytesMemoryviewTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
433 BaseMemoryviewTests, BaseBytesMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
434 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
435 def test_constructor(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
436 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
437 ob = tp(self._source) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54828
diff
changeset
|
438 self.assertTrue(memoryview(ob)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54828
diff
changeset
|
439 self.assertTrue(memoryview(object=ob)) |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
440 self.assertRaises(TypeError, memoryview) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
441 self.assertRaises(TypeError, memoryview, ob, ob) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
442 self.assertRaises(TypeError, memoryview, argument=ob) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
443 self.assertRaises(TypeError, memoryview, ob, argument=True) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
444 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
445 class ArrayMemoryviewTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
446 BaseMemoryviewTests, BaseArrayMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
447 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
448 def test_array_assign(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
449 # 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
|
450 a = array.array('i', range(10)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
451 m = memoryview(a) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
452 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
|
453 m[:] = new_a |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
454 self.assertEqual(a, new_a) |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
455 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
456 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
457 class BytesMemorySliceTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
458 BaseMemorySliceTests, BaseBytesMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
459 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
460 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
461 class ArrayMemorySliceTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
462 BaseMemorySliceTests, BaseArrayMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
463 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
464 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
465 class BytesMemorySliceSliceTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
466 BaseMemorySliceSliceTests, BaseBytesMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
467 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
468 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
469 class ArrayMemorySliceSliceTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
470 BaseMemorySliceSliceTests, BaseArrayMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
471 pass |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
472 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
473 |
|
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
|
474 def test_main(): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
475 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
|
476 |
|
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
|
477 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
|
478 test_main() |
