@@ -2464,3 +2464,122 @@ def test_getitem_validation():
24642464 a [..., 0.0 , dpt .newaxis ]
24652465 with pytest .raises (IndexError ):
24662466 a [:, 0.0 , dpt .newaxis ]
2467+
2468+
2469+ def test_array_like_ctors_order_K ():
2470+ get_queue_or_skip ()
2471+
2472+ sh = (10 , 10 )
2473+ x1 = dpt .zeros (sh , dtype = "i4" , order = "C" )
2474+ r1 = dpt .full_like (x1 , 2 , order = "K" )
2475+ assert dpt .all (r1 == 2 )
2476+ assert r1 .flags .c_contiguous
2477+ r2 = dpt .empty_like (x1 , order = "K" )
2478+ assert r2 .flags .c_contiguous
2479+ r3 = dpt .ones_like (x1 , order = "K" )
2480+ assert dpt .all (r3 == 1 )
2481+ assert r3 .flags .c_contiguous
2482+ r4 = dpt .zeros_like (x1 , order = "K" )
2483+ assert dpt .all (r4 == 0 )
2484+ assert r4 .flags .c_contiguous
2485+
2486+ x2 = dpt .zeros (sh , dtype = "i4" , order = "F" )
2487+ r5 = dpt .full_like (x2 , 2 , order = "K" )
2488+ assert dpt .all (r5 == 2 )
2489+ assert r5 .flags .f_contiguous
2490+ r6 = dpt .empty_like (x2 , order = "K" )
2491+ assert r6 .flags .f_contiguous
2492+ r7 = dpt .ones_like (x2 , order = "K" )
2493+ assert dpt .all (r7 == 1 )
2494+ assert r7 .flags .f_contiguous
2495+ r8 = dpt .zeros_like (x2 , order = "K" )
2496+ assert dpt .all (r8 == 0 )
2497+ assert r8 .flags .f_contiguous
2498+
2499+ x3 = dpt .zeros (sh , dtype = "i4" , order = "C" )[::- 2 , :5 ]
2500+ st_expected = (- 5 , 1 )
2501+ r9 = dpt .full_like (x3 , 2 , order = "K" )
2502+ assert dpt .all (r1 == 2 )
2503+ assert r9 .strides == st_expected
2504+ assert not r9 .flags .forc
2505+ r10 = dpt .empty_like (x3 , order = "K" )
2506+ assert not r10 .flags .forc
2507+ assert r10 .strides == st_expected
2508+ r11 = dpt .ones_like (x3 , order = "K" )
2509+ assert dpt .all (r11 == 1 )
2510+ assert not r11 .flags .forc
2511+ assert r11 .strides == st_expected
2512+ r12 = dpt .zeros_like (x3 , order = "K" )
2513+ assert dpt .all (r12 == 0 )
2514+ assert not r12 .flags .forc
2515+ assert r12 .strides == st_expected
2516+
2517+
2518+ def test_array_like_ctors_order_A ():
2519+ get_queue_or_skip ()
2520+
2521+ sh = (10 , 10 )
2522+ x1 = dpt .zeros (sh , dtype = "i4" , order = "C" )
2523+ r1 = dpt .full_like (x1 , 2 , order = "A" )
2524+ assert dpt .all (r1 == 2 )
2525+ assert r1 .flags .c_contiguous
2526+ r2 = dpt .empty_like (x1 , order = "A" )
2527+ assert r2 .flags .c_contiguous
2528+ r3 = dpt .ones_like (x1 , order = "A" )
2529+ assert dpt .all (r3 == 1 )
2530+ assert r3 .flags .c_contiguous
2531+ r4 = dpt .zeros_like (x1 , order = "A" )
2532+ assert dpt .all (r4 == 0 )
2533+ assert r4 .flags .c_contiguous
2534+
2535+ x2 = dpt .zeros (sh , dtype = "i4" , order = "F" )
2536+ r5 = dpt .full_like (x2 , 2 , order = "A" )
2537+ assert dpt .all (r5 == 2 )
2538+ assert r5 .flags .f_contiguous
2539+ r6 = dpt .empty_like (x2 , order = "A" )
2540+ assert r6 .flags .f_contiguous
2541+ r7 = dpt .ones_like (x2 , order = "A" )
2542+ assert dpt .all (r7 == 1 )
2543+ assert r7 .flags .f_contiguous
2544+ r8 = dpt .zeros_like (x2 , order = "A" )
2545+ assert dpt .all (r8 == 0 )
2546+ assert r8 .flags .f_contiguous
2547+
2548+ x3 = dpt .zeros (sh , dtype = "i4" , order = "C" )[::- 2 , :5 ]
2549+ r9 = dpt .full_like (x3 , 2 , order = "A" )
2550+ assert dpt .all (r1 == 2 )
2551+ assert r9 .flags .c_contiguous
2552+ r10 = dpt .empty_like (x3 , order = "A" )
2553+ assert r10 .flags .c_contiguous
2554+ r11 = dpt .ones_like (x3 , order = "A" )
2555+ assert dpt .all (r11 == 1 )
2556+ assert r11 .flags .c_contiguous
2557+ r12 = dpt .zeros_like (x3 , order = "A" )
2558+ assert dpt .all (r12 == 0 )
2559+ assert r12 .flags .c_contiguous
2560+
2561+
2562+ def test_full_like_order_K_array_fill_v ():
2563+ get_queue_or_skip ()
2564+
2565+ x = dpt .zeros ((10 , 10 ), dtype = "i4" )
2566+ fill_v = dpt .asarray (2 , dtype = "i4" )
2567+
2568+ r1 = dpt .full_like (x , fill_v , order = "K" )
2569+ assert dpt .all (r1 == 2 )
2570+
2571+ # broadcast behavior
2572+ fill_v = dpt .arange (10 , dtype = "i4" )[:, dpt .newaxis ]
2573+ r1 = dpt .full_like (x , fill_v , order = "K" )
2574+ assert dpt .all (r1 == dpt .tile (fill_v , (1 , 10 )))
2575+
2576+
2577+ def test_full_like_order_K_same_input_output_queues ():
2578+ q1 = get_queue_or_skip ()
2579+ q2 = get_queue_or_skip ()
2580+
2581+ x = dpt .zeros ((10 , 10 ), dtype = "i4" , sycl_queue = q1 )
2582+ fill_v = dpt .asarray (2 , dtype = "i4" , sycl_queue = q2 )
2583+
2584+ r = dpt .full_like (x , fill_v , order = "K" )
2585+ assert r .sycl_queue == x .sycl_queue
0 commit comments