diff options
author | M. Eric Irrgang <ericirrgang@gmail.com> | 2022-07-17 10:49:56 -0500 |
---|---|---|
committer | M. Eric Irrgang <ericirrgang@gmail.com> | 2022-07-17 10:49:56 -0500 |
commit | e286f461b54c43e2a16b3f6fc6d829936ea28c27 (patch) | |
tree | 2548fb9fefc1fd03ca1536a1bfd236c9cbb2d229 /numpy/array_api/tests | |
parent | 5651445944bce163a2c3f746d6ac1acd9ae76032 (diff) | |
download | numpy-e286f461b54c43e2a16b3f6fc6d829936ea28c27.tar.gz |
Expand test_asarray.py.
* Improve comments/docs.
* Improve descriptiveness of variable names.
* Add additional test expressions that would not pass without
this patch.
Diffstat (limited to 'numpy/array_api/tests')
-rw-r--r-- | numpy/array_api/tests/test_asarray.py | 46 |
1 files changed, 33 insertions, 13 deletions
diff --git a/numpy/array_api/tests/test_asarray.py b/numpy/array_api/tests/test_asarray.py index bd1859d71..fdcc77506 100644 --- a/numpy/array_api/tests/test_asarray.py +++ b/numpy/array_api/tests/test_asarray.py @@ -1,24 +1,44 @@ import numpy as np -def test_fast_return(): - """""" - a = np.array([1, 2, 3], dtype='i') - assert np.asarray(a) is a - assert np.asarray(a, dtype='i') is a - # This may produce a new view or a copy, but is never the same object. - assert np.asarray(a, dtype='l') is not a +def test_dtype_identity(): + """Confirm the intended behavior for ``asarray`` results. + The result of ``asarray()`` should have the dtype provided through the + keyword argument, when used. This forces unique array handles to be + produced for unique np.dtype objects, but (for equivalent dtypes), the + underlying data (the base object) is shared with the original array object. + + Ref https://github.com/numpy/numpy/issues/1468 + """ + int_array = np.array([1, 2, 3], dtype='i') + assert np.asarray(int_array) is int_array + + # The character code resolves to the singleton dtype object provided + # by the numpy package. + assert np.asarray(int_array, dtype='i') is int_array + + # Derive a dtype from n.dtype('i'), but add a metadata object to force + # the dtype to be distinct. unequal_type = np.dtype('i', metadata={'spam': True}) - b = np.asarray(a, dtype=unequal_type) - assert b is not a - assert b.base is a + annotated_int_array = np.asarray(int_array, dtype=unequal_type) + assert annotated_int_array is not int_array + assert annotated_int_array.base is int_array + + # These ``asarray()`` calls may produce a new view or a copy, + # but never the same object. + long_int_array = np.asarray(int_array, dtype='l') + assert long_int_array is not int_array + assert np.asarray(int_array, dtype='q') is not int_array + assert np.asarray(long_int_array, dtype='q') is not long_int_array + assert np.asarray(int_array, dtype='l') is not np.asarray(int_array, dtype='l') + assert np.asarray(int_array, dtype='l').base is np.asarray(int_array, dtype='l').base equivalent_requirement = np.dtype('i', metadata={'spam': True}) - c = np.asarray(b, dtype=equivalent_requirement) + annotated_int_array_alt = np.asarray(annotated_int_array, dtype=equivalent_requirement) # The descriptors are equivalent, but we have created # distinct dtype instances. assert unequal_type == equivalent_requirement assert unequal_type is not equivalent_requirement - assert c is not b - assert c.dtype is equivalent_requirement + assert annotated_int_array_alt is not annotated_int_array + assert annotated_int_array_alt.dtype is equivalent_requirement |