24
24
)
25
25
from .third_party .cupy import testing
26
26
27
- testdata = []
28
- testdata += [
29
- ([True , False , True ], dtype )
30
- for dtype in get_all_dtypes (no_none = True , no_complex = True )
31
- ]
32
- testdata += [
33
- ([1 , - 1 , 0 ], dtype )
34
- for dtype in get_all_dtypes (
35
- no_none = True , no_bool = True , no_complex = True , no_unsigned = True
36
- )
37
- ]
38
- testdata += [([0.1 , 0.0 , - 0.1 ], dtype ) for dtype in get_float_dtypes ()]
39
- testdata += [([1j , - 1j , 1 - 2j ], dtype ) for dtype in get_complex_dtypes ()]
40
-
41
27
42
28
def _compare_results (result , expected ):
43
29
"""Compare lists of arrays."""
@@ -48,40 +34,6 @@ def _compare_results(result, expected):
48
34
assert_array_equal (x , y )
49
35
50
36
51
- @pytest .mark .parametrize ("in_obj, out_dtype" , testdata )
52
- def test_copyto_dtype (in_obj , out_dtype ):
53
- ndarr = numpy .array (in_obj )
54
- expected = numpy .empty (ndarr .size , dtype = out_dtype )
55
- numpy .copyto (expected , ndarr )
56
-
57
- dparr = dpnp .array (in_obj )
58
- result = dpnp .empty (dparr .size , dtype = out_dtype )
59
- dpnp .copyto (result , dparr )
60
-
61
- assert_array_equal (result , expected )
62
-
63
-
64
- @pytest .mark .parametrize ("dst" , [7 , numpy .ones (10 ), (2 , 7 ), [5 ], range (3 )])
65
- def test_copyto_dst_raises (dst ):
66
- a = dpnp .array (4 )
67
- with pytest .raises (
68
- TypeError ,
69
- match = "Destination array must be any of supported type, but got" ,
70
- ):
71
- dpnp .copyto (dst , a )
72
-
73
-
74
- @pytest .mark .parametrize ("where" , [numpy .ones (10 ), (2 , 7 ), [5 ], range (3 )])
75
- def test_copyto_where_raises (where ):
76
- a = dpnp .empty ((2 , 3 ))
77
- b = dpnp .arange (6 ).reshape ((2 , 3 ))
78
-
79
- with pytest .raises (
80
- TypeError , match = "`where` array must be any of supported type, but got"
81
- ):
82
- dpnp .copyto (a , b , where = where )
83
-
84
-
85
37
def test_result_type ():
86
38
X = [dpnp .ones ((2 ), dtype = dpnp .int64 ), dpnp .int32 , "float32" ]
87
39
X_np = [numpy .ones ((2 ), dtype = numpy .int64 ), numpy .int32 , "float32" ]
@@ -364,6 +316,85 @@ def test_broadcast_shapes(self, shape):
364
316
assert_equal (result , expected )
365
317
366
318
319
+ class TestCopyTo :
320
+ testdata = []
321
+ testdata += [
322
+ ([True , False , True ], dtype )
323
+ for dtype in get_all_dtypes (no_none = True , no_complex = True )
324
+ ]
325
+ testdata += [
326
+ ([1 , - 1 , 0 ], dtype )
327
+ for dtype in get_all_dtypes (
328
+ no_none = True , no_bool = True , no_complex = True , no_unsigned = True
329
+ )
330
+ ]
331
+ testdata += [([0.1 , 0.0 , - 0.1 ], dtype ) for dtype in get_float_dtypes ()]
332
+ testdata += [([1j , - 1j , 1 - 2j ], dtype ) for dtype in get_complex_dtypes ()]
333
+
334
+ @pytest .mark .parametrize ("data, dt_out" , testdata )
335
+ def test_dtype (self , data , dt_out ):
336
+ a = numpy .array (data )
337
+ ia = dpnp .array (a )
338
+
339
+ expected = numpy .empty (a .size , dtype = dt_out )
340
+ result = dpnp .empty (ia .size , dtype = dt_out )
341
+ numpy .copyto (expected , a )
342
+ dpnp .copyto (result , ia )
343
+
344
+ assert_array_equal (result , expected )
345
+
346
+ @pytest .mark .parametrize ("data, dt_out" , testdata )
347
+ def test_dtype_input_list (self , data , dt_out ):
348
+ expected = numpy .empty (3 , dtype = dt_out )
349
+ result = dpnp .empty (3 , dtype = dt_out )
350
+ assert isinstance (data , list )
351
+ numpy .copyto (expected , data )
352
+ dpnp .copyto (result , data )
353
+
354
+ assert_array_equal (result , expected )
355
+
356
+ @pytest .mark .parametrize ("xp" , [dpnp , numpy ])
357
+ @pytest .mark .parametrize (
358
+ "data" , [(1 , 2 , - 3 ), [1 , 2 , - 3 ]], ids = ["tuple" , "list" ]
359
+ )
360
+ @pytest .mark .parametrize (
361
+ "dst_dt" , [dpnp .uint8 , dpnp .uint16 , dpnp .uint32 , dpnp .uint64 ]
362
+ )
363
+ def test_casting_error (self , xp , data , dst_dt ):
364
+ # cannot cast to unsigned integer
365
+ dst = xp .empty (3 , dtype = dst_dt )
366
+ assert_raises (TypeError , xp .copyto , dst , data )
367
+
368
+ @pytest .mark .parametrize ("xp" , [dpnp , numpy ])
369
+ @pytest .mark .parametrize (
370
+ "dst_dt" , [dpnp .uint8 , dpnp .uint16 , dpnp .uint32 , dpnp .uint64 ]
371
+ )
372
+ def test_scalar_error (self , xp , dst_dt ):
373
+ # cannot cast to unsigned integer, input is scalar
374
+ dst = xp .empty (1 , dtype = dst_dt )
375
+ assert_raises (OverflowError , xp .copyto , dst , - 5 )
376
+
377
+ @pytest .mark .parametrize ("dst" , [7 , numpy .ones (10 ), (2 , 7 ), [5 ], range (3 )])
378
+ def test_dst_raises (self , dst ):
379
+ a = dpnp .array (4 )
380
+ with pytest .raises (
381
+ TypeError ,
382
+ match = "Destination array must be any of supported type, but got" ,
383
+ ):
384
+ dpnp .copyto (dst , a )
385
+
386
+ @pytest .mark .parametrize ("where" , [numpy .ones (10 ), (2 , 7 ), [5 ], range (3 )])
387
+ def test_where_raises (self , where ):
388
+ a = dpnp .empty ((2 , 3 ))
389
+ b = dpnp .arange (6 ).reshape ((2 , 3 ))
390
+
391
+ with pytest .raises (
392
+ TypeError ,
393
+ match = "`where` array must be any of supported type, but got" ,
394
+ ):
395
+ dpnp .copyto (a , b , where = where )
396
+
397
+
367
398
class TestDelete :
368
399
@pytest .mark .parametrize (
369
400
"obj" , [slice (0 , 4 , 2 ), 3 , [2 , 3 ]], ids = ["slice" , "int" , "list" ]
0 commit comments