@@ -53,6 +53,17 @@ def test_unique_values(dtype):
53
53
assert dpt .all (uv == dpt .arange (2 , dtype = dtype ))
54
54
55
55
56
+ def test_unique_values_strided ():
57
+ get_queue_or_skip ()
58
+
59
+ n , m = 1000 , 20
60
+ inp = dpt .ones ((n , m ), dtype = "i4" , order = "F" )
61
+ inp [:, ::2 ] = 0
62
+
63
+ uv = dpt .unique_values (inp )
64
+ assert dpt .all (uv == dpt .arange (2 , dtype = "i4" ))
65
+
66
+
56
67
@pytest .mark .parametrize (
57
68
"dtype" ,
58
69
[
@@ -86,6 +97,18 @@ def test_unique_counts(dtype):
86
97
assert dpt .all (uv_counts == dpt .full (2 , n , dtype = uv_counts .dtype ))
87
98
88
99
100
+ def test_unique_counts_strided ():
101
+ get_queue_or_skip ()
102
+
103
+ n , m = 1000 , 20
104
+ inp = dpt .ones ((n , m ), dtype = "i4" , order = "F" )
105
+ inp [:, ::2 ] = 0
106
+
107
+ uv , uv_counts = dpt .unique_counts (inp )
108
+ assert dpt .all (uv == dpt .arange (2 , dtype = "i4" ))
109
+ assert dpt .all (uv_counts == dpt .full (2 , n / 2 * m , dtype = uv_counts .dtype ))
110
+
111
+
89
112
@pytest .mark .parametrize (
90
113
"dtype" ,
91
114
[
@@ -120,6 +143,19 @@ def test_unique_inverse(dtype):
120
143
assert inp .shape == inv .shape
121
144
122
145
146
+ def test_unique_inverse_strided ():
147
+ get_queue_or_skip ()
148
+
149
+ n , m = 1000 , 20
150
+ inp = dpt .ones ((n , m ), dtype = "i4" , order = "F" )
151
+ inp [:, ::2 ] = 0
152
+
153
+ uv , inv = dpt .unique_inverse (inp )
154
+ assert dpt .all (uv == dpt .arange (2 , dtype = "i4" ))
155
+ assert dpt .all (inp == uv [inv ])
156
+ assert inp .shape == inv .shape
157
+
158
+
123
159
@pytest .mark .parametrize (
124
160
"dtype" ,
125
161
[
@@ -156,6 +192,21 @@ def test_unique_all(dtype):
156
192
assert dpt .all (uv_counts == dpt .full (2 , n , dtype = uv_counts .dtype ))
157
193
158
194
195
+ def test_unique_all_strided ():
196
+ get_queue_or_skip ()
197
+
198
+ n , m = 1000 , 20
199
+ inp = dpt .ones ((n , m ), dtype = "i4" , order = "F" )
200
+ inp [:, ::2 ] = 0
201
+
202
+ uv , ind , inv , uv_counts = dpt .unique_all (inp )
203
+ assert dpt .all (uv == dpt .arange (2 , dtype = "i4" ))
204
+ assert dpt .all (uv == dpt .reshape (inp , - 1 )[ind ])
205
+ assert dpt .all (inp == uv [inv ])
206
+ assert inp .shape == inv .shape
207
+ assert dpt .all (uv_counts == dpt .full (2 , n / 2 * m , dtype = uv_counts .dtype ))
208
+
209
+
159
210
def test_set_functions_empty_input ():
160
211
get_queue_or_skip ()
161
212
x = dpt .ones ((10 , 0 , 1 ), dtype = "i4" )
0 commit comments