Skip to content

Commit b61f09e

Browse files
committed
improve coverage of out keyword for unary functions
also consolidates two add tests
1 parent e28e1aa commit b61f09e

File tree

2 files changed

+49
-22
lines changed

2 files changed

+49
-22
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

@@ -202,3 +204,44 @@ def test_abs_alignment(dtype):
202204

203205
dpt.abs(x[:-1], out=r[1:])
204206
assert np.allclose(dpt.asnumpy(r[1:]), dpt.asnumpy(r2))
207+
208+
209+
def test_abs_errors():
210+
q1 = get_queue_or_skip()
211+
q2 = dpctl.SyclQueue()
212+
213+
x = dpt.ones(2, dtype="float32", sycl_queue=q1)
214+
y = dpt.empty_like(x, sycl_queue=q2)
215+
with pytest.raises(dpctl.utils.ExecutionPlacementError) as excinfo:
216+
dpt.abs(x, out=y)
217+
assert "Input and output allocation queues are not compatible" in str(
218+
excinfo.value
219+
)
220+
221+
x = dpt.ones(2, dtype="float32")
222+
y = dpt.empty(3, dtype=x.dtype)
223+
with pytest.raises(ValueError) as excinfo:
224+
dpt.abs(x, out=y)
225+
assert "The shape of input and output arrays are inconsistent" in str(
226+
excinfo.value
227+
)
228+
229+
x = np.ones(2, dtype="float32")
230+
with pytest.raises(TypeError) as excinfo:
231+
dpt.abs(x)
232+
assert re.match(
233+
"Expected dpctl.tensor.usm_ndarray, got.*",
234+
str(excinfo.value),
235+
)
236+
237+
x = dpt.ones(2, dtype="float32")
238+
y = np.empty(x.shape, dtype=x.dtype)
239+
with pytest.raises(TypeError) as excinfo:
240+
dpt.abs(x, out=y)
241+
assert "output array must be of usm_ndarray type" in str(excinfo.value)
242+
243+
x = dpt.ones(5, dtype="f4")
244+
y = dpt.zeros_like(x, dtype="int8")
245+
with pytest.raises(ValueError) as excinfo:
246+
dpt.abs(x, out=y)
247+
assert re.match("Output array of type.*is needed", str(excinfo.value))

dpctl/tests/elementwise/test_add.py

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -267,19 +267,12 @@ def test_add_types_property():
267267

268268

269269
def test_add_errors():
270-
get_queue_or_skip()
271-
try:
272-
gpu_queue = dpctl.SyclQueue("gpu")
273-
except dpctl.SyclQueueCreationError:
274-
pytest.skip("SyclQueue('gpu') failed, skipping")
275-
try:
276-
cpu_queue = dpctl.SyclQueue("cpu")
277-
except dpctl.SyclQueueCreationError:
278-
pytest.skip("SyclQueue('cpu') failed, skipping")
270+
q1 = get_queue_or_skip()
271+
q2 = dpctl.SyclQueue()
279272

280-
ar1 = dpt.ones(2, dtype="float32", sycl_queue=gpu_queue)
281-
ar2 = dpt.ones_like(ar1, sycl_queue=gpu_queue)
282-
y = dpt.empty_like(ar1, sycl_queue=cpu_queue)
273+
ar1 = dpt.ones(2, dtype="float32", sycl_queue=q1)
274+
ar2 = dpt.ones_like(ar1, sycl_queue=q1)
275+
y = dpt.empty_like(ar1, sycl_queue=q2)
283276
with pytest.raises(ExecutionPlacementError) as excinfo:
284277
dpt.add(ar1, ar2, out=y)
285278
assert "Input and output allocation queues are not compatible" in str(
@@ -311,17 +304,8 @@ def test_add_errors():
311304
dpt.add(ar1, ar2, out=y)
312305
assert "output array must be of usm_ndarray type" in str(excinfo.value)
313306

314-
315-
@pytest.mark.parametrize("dtype", _all_dtypes)
316-
def test_add_dtype_error(
317-
dtype,
318-
):
319-
q = get_queue_or_skip()
320-
skip_if_dtype_not_supported(dtype, q)
321-
322-
ar1 = dpt.ones(5, dtype=dtype)
307+
ar1 = dpt.ones(5, dtype="f4")
323308
ar2 = dpt.ones_like(ar1, dtype="f4")
324-
325309
y = dpt.zeros_like(ar1, dtype="int8")
326310
with pytest.raises(ValueError) as excinfo:
327311
dpt.add(ar1, ar2, out=y)

0 commit comments

Comments
 (0)