Skip to content

Commit b6f4b4b

Browse files
committed
improve test coverage
1 parent 08fe8ba commit b6f4b4b

File tree

6 files changed

+255
-558
lines changed

6 files changed

+255
-558
lines changed

dpnp/dpnp_iface_trigonometric.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1305,7 +1305,7 @@ def logaddexp(
13051305
Parameters `where`, `dtype` and `subok` are supported with their default values.
13061306
Keyword arguments `kwargs` are currently unsupported.
13071307
Otherwise the function will be executed sequentially on CPU.
1308-
Input array data types are limited by supported DPNP :ref:`Data types`.
1308+
Input array data types are limited by real-valued data types.
13091309
13101310
See Also
13111311
--------

tests/test_absolute.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import numpy
22
import pytest
3-
from numpy.testing import assert_array_equal, assert_equal
3+
from numpy.testing import assert_equal
44

55
import dpnp
66

7-
from .helper import get_all_dtypes, get_complex_dtypes, get_float_complex_dtypes
7+
from .helper import (
8+
assert_dtype_allclose,
9+
get_all_dtypes,
10+
get_complex_dtypes,
11+
get_float_complex_dtypes,
12+
)
813

914

1015
@pytest.mark.parametrize("func", ["abs", "absolute"])
@@ -15,8 +20,13 @@ def test_abs(func, dtype):
1520

1621
result = getattr(dpnp, func)(ia)
1722
expected = getattr(numpy, func)(a)
18-
assert_array_equal(expected, result)
19-
assert_equal(result.dtype, expected.dtype)
23+
assert_dtype_allclose(result, expected)
24+
25+
# out keyword
26+
dp_out = dpnp.empty(expected.shape, dtype=expected.dtype)
27+
result = getattr(dpnp, func)(ia, out=dp_out)
28+
assert result is dp_out
29+
assert_dtype_allclose(result, expected)
2030

2131

2232
@pytest.mark.parametrize("stride", [-4, -2, -1, 1, 2, 4])

tests/test_bitwise.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
import dpnp as inp
66

7+
from .helper import assert_dtype_allclose, get_integer_dtypes
8+
79

810
@pytest.mark.parametrize(
911
"lhs",
@@ -134,3 +136,15 @@ def test_right_shift(self, lhs, rhs, dtype):
134136
dp_a >>= dp_b
135137
np_a >>= np_b
136138
assert_array_equal(dp_a, np_a)
139+
140+
141+
@pytest.mark.parametrize("dtype", get_integer_dtypes())
142+
def test_invert_out(dtype):
143+
np_a = numpy.arange(-5, 5, dtype=dtype)
144+
dp_a = inp.array(np_a)
145+
146+
expected = numpy.invert(np_a)
147+
dp_out = inp.empty(expected.shape, dtype=expected.dtype)
148+
result = inp.invert(dp_a, out=dp_out)
149+
assert result is dp_out
150+
assert_dtype_allclose(result, expected)

tests/test_logic.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,11 @@ def test_logical_not(dtype):
250250
dpnp_res = dpnp.logical_not(a)
251251
assert_equal(dpnp_res, np_res)
252252

253+
dp_out = dpnp.empty(np_res.shape, dtype=dpnp.bool)
254+
dpnp_res = dpnp.logical_not(a, out=dp_out)
255+
assert dpnp_res is dp_out
256+
assert_equal(dpnp_res, np_res)
257+
253258

254259
@pytest.mark.parametrize(
255260
"op",
@@ -316,6 +321,13 @@ def test_elemwise_comparison(op, x1, x2, dtype):
316321
dpnp_res = getattr(dpnp, op)(dp_x1[::-1], dp_x2)
317322
assert_equal(dpnp_res, np_res)
318323

324+
# out keyword
325+
np_res = getattr(numpy, op)(np_x1, np_x2)
326+
dp_out = dpnp.empty(np_res.shape, dtype=dpnp.bool)
327+
dpnp_res = getattr(dpnp, op)(dp_x1, dp_x2, out=dp_out)
328+
assert dp_out is dpnp_res
329+
assert_equal(dpnp_res, np_res)
330+
319331

320332
@pytest.mark.parametrize(
321333
"op",
@@ -374,6 +386,11 @@ def test_comparison_no_broadcast_with_shapes(op, sh1, sh2):
374386
@pytest.mark.parametrize("dtype", get_float_complex_dtypes())
375387
def test_finite(op, data, dtype):
376388
x = dpnp.asarray(data, dtype=dtype)
377-
np_res = getattr(dpnp, op)(x)
378-
dpnp_res = getattr(numpy, op)(x.asnumpy())
389+
np_res = getattr(numpy, op)(x.asnumpy())
390+
dpnp_res = getattr(dpnp, op)(x)
391+
assert_equal(dpnp_res, np_res)
392+
393+
dp_out = dpnp.empty(np_res.shape, dtype=dpnp.bool)
394+
dpnp_res = getattr(dpnp, op)(x, out=dp_out)
395+
assert dp_out is dpnp_res
379396
assert_equal(dpnp_res, np_res)

tests/test_mathematical.py

Lines changed: 57 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,17 @@ def test_negative(data, dtype):
660660
expected = numpy.negative(np_a)
661661
assert_allclose(result, expected)
662662

663+
result = -dpnp_a
664+
expected = -np_a
665+
assert_allclose(result, expected)
666+
667+
# out keyword
668+
if dtype is not None:
669+
dp_out = dpnp.empty(expected.shape, dtype=dtype)
670+
result = dpnp.negative(dpnp_a, out=dp_out)
671+
assert result is dp_out
672+
assert_allclose(result, expected)
673+
663674

664675
def test_negative_boolean():
665676
dpnp_a = dpnp.array([True, False])
@@ -686,6 +697,13 @@ def test_positive(data, dtype):
686697
expected = +np_a
687698
assert_allclose(result, expected)
688699

700+
# out keyword
701+
if dtype is not None:
702+
dp_out = dpnp.empty(expected.shape, dtype=dtype)
703+
result = dpnp.positive(dpnp_a, out=dp_out)
704+
assert result is dp_out
705+
assert_allclose(result, expected)
706+
689707

690708
def test_positive_boolean():
691709
dpnp_a = dpnp.array([True, False])
@@ -811,7 +829,14 @@ def test_sign(data, dtype):
811829

812830
result = dpnp.sign(dpnp_a)
813831
expected = numpy.sign(np_a)
814-
assert_allclose(result, expected)
832+
assert_dtype_allclose(result, expected)
833+
834+
# out keyword
835+
if dtype is not None:
836+
dp_out = dpnp.empty(expected.shape, dtype=expected.dtype)
837+
result = dpnp.sign(dpnp_a, out=dp_out)
838+
assert dp_out is result
839+
assert_dtype_allclose(result, expected)
815840

816841

817842
def test_sign_boolean():
@@ -833,9 +858,20 @@ def test_signbit(data, dtype):
833858

834859
result = dpnp.signbit(dpnp_a)
835860
expected = numpy.signbit(np_a)
836-
assert_allclose(result, expected)
861+
assert_dtype_allclose(result, expected)
862+
863+
# out keyword
864+
dp_out = dpnp.empty(expected.shape, dtype=expected.dtype)
865+
result = dpnp.signbit(dpnp_a, out=dp_out)
866+
assert dp_out is result
867+
assert_dtype_allclose(result, expected)
837868

838869

870+
@pytest.mark.parametrize(
871+
"func",
872+
["real", "imag", "conj"],
873+
ids=["real", "imag", "conj"],
874+
)
839875
@pytest.mark.parametrize(
840876
"data",
841877
[complex(-1, -4), complex(-1, 2), complex(3, -7), complex(4, 12)],
@@ -847,17 +883,20 @@ def test_signbit(data, dtype):
847883
],
848884
)
849885
@pytest.mark.parametrize("dtype", get_complex_dtypes())
850-
def test_real_imag(data, dtype):
886+
def test_complex_funcs(func, data, dtype):
851887
np_a = numpy.array(data, dtype=dtype)
852888
dpnp_a = dpnp.array(data, dtype=dtype)
853889

854-
result = dpnp.real(dpnp_a)
855-
expected = numpy.real(np_a)
856-
assert_allclose(result, expected)
890+
result = getattr(dpnp, func)(dpnp_a)
891+
expected = getattr(numpy, func)(np_a)
892+
assert_dtype_allclose(result, expected)
857893

858-
result = dpnp.imag(dpnp_a)
859-
expected = numpy.imag(np_a)
860-
assert_allclose(result, expected)
894+
# out keyword
895+
if func == "conj":
896+
dp_out = dpnp.empty(expected.shape, dtype=expected.dtype)
897+
result = getattr(dpnp, func)(dpnp_a, out=dp_out)
898+
assert dp_out is result
899+
assert_dtype_allclose(result, expected)
861900

862901

863902
@pytest.mark.parametrize("dtype", get_complex_dtypes())
@@ -875,9 +914,16 @@ def test_projection_infinity(dtype):
875914
complex(dpnp.inf, 0.0),
876915
]
877916

878-
result = dpnp.proj(dpnp.array(X, dtype=dtype))
917+
a = dpnp.array(X, dtype=dtype)
918+
result = dpnp.proj(a)
879919
expected = dpnp.array(Y, dtype=dtype)
880-
assert_allclose(result, expected)
920+
assert_dtype_allclose(result, expected)
921+
922+
# out keyword
923+
dp_out = dpnp.empty(expected.shape, dtype=expected.dtype)
924+
result = dpnp.proj(a, out=dp_out)
925+
assert dp_out is result
926+
assert_dtype_allclose(result, expected)
881927

882928

883929
@pytest.mark.parametrize("dtype", get_all_dtypes())

0 commit comments

Comments
 (0)