Skip to content

Commit 2976e95

Browse files
committed
improve coverage of out keyword for unary functions
also consolidates two add tests
1 parent 86965dd commit 2976e95

File tree

2 files changed

+55
-35
lines changed

2 files changed

+55
-35
lines changed

dpctl/tests/elementwise/test_abs.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515
# limitations under the License.
1616

1717
import itertools
18+
import re
1819
import warnings
1920

2021
import numpy as np
2122
import pytest
2223

24+
import dpctl
2325
import dpctl.tensor as dpt
2426
from dpctl.tests.helper import get_queue_or_skip, skip_if_dtype_not_supported
2527

@@ -183,3 +185,44 @@ def test_abs_alignment(dtype):
183185

184186
dpt.abs(x[:-1], out=r[1:])
185187
assert np.allclose(dpt.asnumpy(r[1:]), dpt.asnumpy(r2))
188+
189+
190+
def test_abs_errors():
191+
q1 = get_queue_or_skip()
192+
q2 = dpctl.SyclQueue()
193+
194+
x = dpt.ones(2, dtype="float32", sycl_queue=q1)
195+
y = dpt.empty_like(x, sycl_queue=q2)
196+
with pytest.raises(dpctl.utils.ExecutionPlacementError) as excinfo:
197+
dpt.abs(x, out=y)
198+
assert "Input and output allocation queues are not compatible" in str(
199+
excinfo.value
200+
)
201+
202+
x = dpt.ones(2, dtype="float32")
203+
y = dpt.empty(3, dtype=x.dtype)
204+
with pytest.raises(ValueError) as excinfo:
205+
dpt.abs(x, out=y)
206+
assert "The shape of input and output arrays are inconsistent" in str(
207+
excinfo.value
208+
)
209+
210+
x = np.ones(2, dtype="float32")
211+
with pytest.raises(TypeError) as excinfo:
212+
dpt.abs(x)
213+
assert re.match(
214+
"Expected dpctl.tensor.usm_ndarray, got.*",
215+
str(excinfo.value),
216+
)
217+
218+
x = dpt.ones(2, dtype="float32")
219+
y = np.empty(x.shape, dtype=x.dtype)
220+
with pytest.raises(TypeError) as excinfo:
221+
dpt.abs(x, out=y)
222+
assert "output array must be of usm_ndarray type" in str(excinfo.value)
223+
224+
x = dpt.ones(5, dtype="f4")
225+
y = dpt.zeros_like(x, dtype="int8")
226+
with pytest.raises(ValueError) as excinfo:
227+
dpt.abs(x, out=y)
228+
assert re.match("Output array of type.*is needed", str(excinfo.value))

dpctl/tests/elementwise/test_add.py

Lines changed: 12 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -250,19 +250,12 @@ def test_add_types_property():
250250

251251

252252
def test_add_errors():
253-
get_queue_or_skip()
254-
try:
255-
gpu_queue = dpctl.SyclQueue("gpu")
256-
except dpctl.SyclQueueCreationError:
257-
pytest.skip("SyclQueue('gpu') failed, skipping")
258-
try:
259-
cpu_queue = dpctl.SyclQueue("cpu")
260-
except dpctl.SyclQueueCreationError:
261-
pytest.skip("SyclQueue('cpu') failed, skipping")
262-
263-
ar1 = dpt.ones(2, dtype="float32", sycl_queue=gpu_queue)
264-
ar2 = dpt.ones_like(ar1, sycl_queue=gpu_queue)
265-
y = dpt.empty_like(ar1, sycl_queue=cpu_queue)
253+
q1 = get_queue_or_skip()
254+
q2 = dpctl.SyclQueue()
255+
256+
ar1 = dpt.ones(2, dtype="float32", sycl_queue=q1)
257+
ar2 = dpt.ones_like(ar1, sycl_queue=q1)
258+
y = dpt.empty_like(ar1, sycl_queue=q2)
266259
with pytest.raises(ExecutionPlacementError) as excinfo:
267260
dpt.add(ar1, ar2, out=y)
268261
assert "Input and output allocation queues are not compatible" in str(
@@ -294,17 +287,8 @@ def test_add_errors():
294287
dpt.add(ar1, ar2, out=y)
295288
assert "output array must be of usm_ndarray type" in str(excinfo.value)
296289

297-
298-
@pytest.mark.parametrize("dtype", _all_dtypes)
299-
def test_add_dtype_error(
300-
dtype,
301-
):
302-
q = get_queue_or_skip()
303-
skip_if_dtype_not_supported(dtype, q)
304-
305-
ar1 = dpt.ones(5, dtype=dtype)
290+
ar1 = dpt.ones(5, dtype="f4")
306291
ar2 = dpt.ones_like(ar1, dtype="f4")
307-
308292
y = dpt.zeros_like(ar1, dtype="int8")
309293
with pytest.raises(ValueError) as excinfo:
310294
dpt.add(ar1, ar2, out=y)
@@ -436,18 +420,11 @@ def test_add_inplace_operator_mutual_broadcast():
436420

437421

438422
def test_add_inplace_errors():
439-
get_queue_or_skip()
440-
try:
441-
gpu_queue = dpctl.SyclQueue("gpu")
442-
except dpctl.SyclQueueCreationError:
443-
pytest.skip("SyclQueue('gpu') failed, skipping")
444-
try:
445-
cpu_queue = dpctl.SyclQueue("cpu")
446-
except dpctl.SyclQueueCreationError:
447-
pytest.skip("SyclQueue('cpu') failed, skipping")
448-
449-
ar1 = dpt.ones(2, dtype="float32", sycl_queue=gpu_queue)
450-
ar2 = dpt.ones_like(ar1, sycl_queue=cpu_queue)
423+
q1 = get_queue_or_skip()
424+
q2 = dpctl.SyclQueue()
425+
426+
ar1 = dpt.ones(2, dtype="float32", sycl_queue=q1)
427+
ar2 = dpt.ones_like(ar1, sycl_queue=q2)
451428
with pytest.raises(ExecutionPlacementError):
452429
dpt.add(ar1, ar2, out=ar1)
453430

0 commit comments

Comments
 (0)