MCPcopy Create free account
hub / github.com/numpy/numpy / test_validate_index

Function test_validate_index

numpy/array_api/tests/test_array_object.py:28–82  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

26
27
28def test_validate_index():
29 # The indexing tests in the official array API test suite test that the
30 # array object correctly handles the subset of indices that are required
31 # by the spec. But the NumPy array API implementation specifically
32 # disallows any index not required by the spec, via Array._validate_index.
33 # This test focuses on testing that non-valid indices are correctly
34 # rejected. See
35 # https://data-apis.org/array-api/latest/API_specification/indexing.html
36 # and the docstring of Array._validate_index for the exact indexing
37 # behavior that should be allowed. This does not test indices that are
38 # already invalid in NumPy itself because Array will generally just pass
39 # such indices directly to the underlying np.ndarray.
40
41 a = ones((3, 4))
42
43 # Out of bounds slices are not allowed
44 assert_raises(IndexError, lambda: a[:4])
45 assert_raises(IndexError, lambda: a[:-4])
46 assert_raises(IndexError, lambda: a[:3:-1])
47 assert_raises(IndexError, lambda: a[:-5:-1])
48 assert_raises(IndexError, lambda: a[4:])
49 assert_raises(IndexError, lambda: a[-4:])
50 assert_raises(IndexError, lambda: a[4::-1])
51 assert_raises(IndexError, lambda: a[-4::-1])
52
53 assert_raises(IndexError, lambda: a[...,:5])
54 assert_raises(IndexError, lambda: a[...,:-5])
55 assert_raises(IndexError, lambda: a[...,:5:-1])
56 assert_raises(IndexError, lambda: a[...,:-6:-1])
57 assert_raises(IndexError, lambda: a[...,5:])
58 assert_raises(IndexError, lambda: a[...,-5:])
59 assert_raises(IndexError, lambda: a[...,5::-1])
60 assert_raises(IndexError, lambda: a[...,-5::-1])
61
62 # Boolean indices cannot be part of a larger tuple index
63 assert_raises(IndexError, lambda: a[a[:,0]==1,0])
64 assert_raises(IndexError, lambda: a[a[:,0]==1,...])
65 assert_raises(IndexError, lambda: a[..., a[0]==1])
66 assert_raises(IndexError, lambda: a[[True, True, True]])
67 assert_raises(IndexError, lambda: a[(True, True, True),])
68
69 # Integer array indices are not allowed (except for 0-D)
70 idx = asarray([[0, 1]])
71 assert_raises(IndexError, lambda: a[idx])
72 assert_raises(IndexError, lambda: a[idx,])
73 assert_raises(IndexError, lambda: a[[0, 1]])
74 assert_raises(IndexError, lambda: a[(0, 1), (0, 1)])
75 assert_raises(IndexError, lambda: a[[0, 1]])
76 assert_raises(IndexError, lambda: a[np.array([[0, 1]])])
77
78 # Multiaxis indices must contain exactly as many indices as dimensions
79 assert_raises(IndexError, lambda: a[()])
80 assert_raises(IndexError, lambda: a[0,])
81 assert_raises(IndexError, lambda: a[0])
82 assert_raises(IndexError, lambda: a[:])
83
84def test_operators():
85 # For every operator, we test that it works for the required type

Callers

nothing calls this directly

Calls 3

assert_raisesFunction · 0.90
onesFunction · 0.50
asarrayFunction · 0.50

Tested by

no test coverage detected