(self)
| 2144 | self.assertEqual(hash(nd), hash(nd.tobytes())) |
| 2145 | |
| 2146 | def test_py_buffer_to_contiguous(self): |
| 2147 | |
| 2148 | # The requests are used in _testbuffer.c:py_buffer_to_contiguous |
| 2149 | # to generate buffers without full information for testing. |
| 2150 | requests = ( |
| 2151 | # distinct flags |
| 2152 | PyBUF_INDIRECT, PyBUF_STRIDES, PyBUF_ND, PyBUF_SIMPLE, |
| 2153 | # compound requests |
| 2154 | PyBUF_FULL, PyBUF_FULL_RO, |
| 2155 | PyBUF_RECORDS, PyBUF_RECORDS_RO, |
| 2156 | PyBUF_STRIDED, PyBUF_STRIDED_RO, |
| 2157 | PyBUF_CONTIG, PyBUF_CONTIG_RO, |
| 2158 | ) |
| 2159 | |
| 2160 | # no buffer interface |
| 2161 | self.assertRaises(TypeError, py_buffer_to_contiguous, {}, 'F', |
| 2162 | PyBUF_FULL_RO) |
| 2163 | |
| 2164 | # scalar, read-only request |
| 2165 | nd = ndarray(9, shape=(), format="L", flags=ND_WRITABLE) |
| 2166 | for order in ['C', 'F', 'A']: |
| 2167 | for request in requests: |
| 2168 | b = py_buffer_to_contiguous(nd, order, request) |
| 2169 | self.assertEqual(b, nd.tobytes()) |
| 2170 | |
| 2171 | # zeros in shape |
| 2172 | nd = ndarray([1], shape=[0], format="L", flags=ND_WRITABLE) |
| 2173 | for order in ['C', 'F', 'A']: |
| 2174 | for request in requests: |
| 2175 | b = py_buffer_to_contiguous(nd, order, request) |
| 2176 | self.assertEqual(b, b'') |
| 2177 | |
| 2178 | nd = ndarray(list(range(8)), shape=[2, 0, 7], format="L", |
| 2179 | flags=ND_WRITABLE) |
| 2180 | for order in ['C', 'F', 'A']: |
| 2181 | for request in requests: |
| 2182 | b = py_buffer_to_contiguous(nd, order, request) |
| 2183 | self.assertEqual(b, b'') |
| 2184 | |
| 2185 | ### One-dimensional arrays are trivial, since Fortran and C order |
| 2186 | ### are the same. |
| 2187 | |
| 2188 | # one-dimensional |
| 2189 | for f in [0, ND_FORTRAN]: |
| 2190 | nd = ndarray([1], shape=[1], format="h", flags=f|ND_WRITABLE) |
| 2191 | ndbytes = nd.tobytes() |
| 2192 | for order in ['C', 'F', 'A']: |
| 2193 | for request in requests: |
| 2194 | b = py_buffer_to_contiguous(nd, order, request) |
| 2195 | self.assertEqual(b, ndbytes) |
| 2196 | |
| 2197 | nd = ndarray([1, 2, 3], shape=[3], format="b", flags=f|ND_WRITABLE) |
| 2198 | ndbytes = nd.tobytes() |
| 2199 | for order in ['C', 'F', 'A']: |
| 2200 | for request in requests: |
| 2201 | b = py_buffer_to_contiguous(nd, order, request) |
| 2202 | self.assertEqual(b, ndbytes) |
| 2203 |
nothing calls this directly
no test coverage detected