Skip to content

Commit 63901fe

Browse files
committed
Tests for new order="K" behavior in array-like constructors
1 parent 98c7417 commit 63901fe

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed

dpctl/tests/test_usm_ndarray_ctor.py

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)