15
15
import numpy as np
16
16
import pytest
17
17
18
- from hypothesis import HealthCheck , assume , given , note , settings , strategies as st
18
+ from hypothesis import (
19
+ HealthCheck ,
20
+ assume ,
21
+ given ,
22
+ note ,
23
+ settings ,
24
+ strategies as st ,
25
+ target ,
26
+ )
19
27
from hypothesis .errors import InvalidArgument , UnsatisfiedAssumption
20
28
from hypothesis .extra import numpy as nps
21
29
@@ -1050,7 +1058,7 @@ def test_advanced_integer_index_minimizes_as_documented(
1050
1058
np .testing .assert_array_equal (s , d )
1051
1059
1052
1060
1053
- @settings (deadline = None , max_examples = 10 )
1061
+ @settings (deadline = None , max_examples = 25 )
1054
1062
@given (
1055
1063
shape = nps .array_shapes (min_dims = 1 , max_dims = 2 , min_side = 1 , max_side = 3 ),
1056
1064
data = st .data (),
@@ -1059,19 +1067,24 @@ def test_advanced_integer_index_can_generate_any_pattern(shape, data):
1059
1067
# ensures that generated index-arrays can be used to yield any pattern of elements from an array
1060
1068
x = np .arange (np .product (shape )).reshape (shape )
1061
1069
1062
- target = data .draw (
1070
+ target_array = data .draw (
1063
1071
nps .arrays (
1064
1072
shape = nps .array_shapes (min_dims = 1 , max_dims = 2 , min_side = 1 , max_side = 2 ),
1065
1073
elements = st .sampled_from (x .flatten ()),
1066
1074
dtype = x .dtype ,
1067
1075
),
1068
1076
label = "target" ,
1069
1077
)
1078
+
1079
+ def index_selects_values_in_order (index ):
1080
+ selected = x [index ]
1081
+ target (len (set (selected .flatten ())), label = "unique indices" )
1082
+ target (float (np .sum (target_array == selected )), label = "elements correct" )
1083
+ return np .all (target_array == selected )
1084
+
1070
1085
find_any (
1071
- nps .integer_array_indices (
1072
- shape , result_shape = st .just (target .shape ), dtype = np .dtype ("int8" )
1073
- ),
1074
- lambda index : np .all (target == x [index ]),
1086
+ nps .integer_array_indices (shape , result_shape = st .just (target_array .shape )),
1087
+ index_selects_values_in_order ,
1075
1088
settings (max_examples = 10 ** 6 ),
1076
1089
)
1077
1090
0 commit comments