summaryrefslogtreecommitdiff
path: root/numpy/array_api/tests/test_asarray.py
diff options
context:
space:
mode:
authorM. Eric Irrgang <ericirrgang@gmail.com>2022-09-13 09:20:45 +0300
committerGitHub <noreply@github.com>2022-09-13 08:20:45 +0200
commit4d4fca0cef2e5594a50c1d10a9db6f21aaba0a58 (patch)
tree5c8e23cd5f0109304a5879d60ad25a761b28424e /numpy/array_api/tests/test_asarray.py
parent688f48ac8448b367bb5c37fa231f667484a50eee (diff)
downloadnumpy-4d4fca0cef2e5594a50c1d10a9db6f21aaba0a58.tar.gz
TST: Move new `asarray` test to a more appropriate place. (#22251)
As noted at #21995 (comment), the new test from #21995 was placed in a directory intended for the Array API, and unrelated to the change. * Consolidate test_dtype_identity into an existing test file. Remove `test_asarray.py`. Create a new `TestAsArray` suite in `test_array_coercion.py` * Linting. Wrap some comments that got too long after function became a method (with additional indentation).
Diffstat (limited to 'numpy/array_api/tests/test_asarray.py')
-rw-r--r--numpy/array_api/tests/test_asarray.py64
1 files changed, 0 insertions, 64 deletions
diff --git a/numpy/array_api/tests/test_asarray.py b/numpy/array_api/tests/test_asarray.py
deleted file mode 100644
index 5c269823f..000000000
--- a/numpy/array_api/tests/test_asarray.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import itertools
-
-import numpy as np
-
-
-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})
- 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
- # Create an equivalent descriptor with a new and distinct dtype instance.
- equivalent_requirement = np.dtype('i', metadata={'spam': True})
- annotated_int_array_alt = np.asarray(annotated_int_array,
- dtype=equivalent_requirement)
- assert unequal_type == equivalent_requirement
- assert unequal_type is not equivalent_requirement
- assert annotated_int_array_alt is not annotated_int_array
- assert annotated_int_array_alt.dtype is equivalent_requirement
-
- # Check the same logic for a pair of C types whose equivalence may vary
- # between computing environments.
- # Find an equivalent pair.
- integer_type_codes = ('i', 'l', 'q')
- integer_dtypes = [np.dtype(code) for code in integer_type_codes]
- typeA = None
- typeB = None
- for typeA, typeB in itertools.permutations(integer_dtypes, r=2):
- if typeA == typeB:
- assert typeA is not typeB
- break
- assert isinstance(typeA, np.dtype) and isinstance(typeB, np.dtype)
-
- # 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')
- long_long_int_array = np.asarray(int_array, dtype='q')
- assert long_int_array is not int_array
- assert long_long_int_array is not int_array
- assert np.asarray(long_int_array, dtype='q') is not long_int_array
- array_a = np.asarray(int_array, dtype=typeA)
- assert typeA == typeB
- assert typeA is not typeB
- assert array_a.dtype is typeA
- assert array_a is not np.asarray(array_a, dtype=typeB)
- assert np.asarray(array_a, dtype=typeB).dtype is typeB
- assert array_a is np.asarray(array_a, dtype=typeB).base