diff options
author | Matti Picus <matti.picus@gmail.com> | 2020-03-18 13:15:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-18 13:15:31 +0200 |
commit | 20f22d849002d80485787adeb8a7340dab159f94 (patch) | |
tree | 0c2b3eb269af9ce6126422e213867a1876c9c8ae /numpy/core/tests | |
parent | 2fc96a0bc15624d7f1f74750bddffeca46f1e73c (diff) | |
parent | e041cdcc5e1e43c54129978261accf09cfb2b134 (diff) | |
download | numpy-20f22d849002d80485787adeb8a7340dab159f94.tar.gz |
Merge pull request #15766 from seberg/simplify-specialized-casts
BUG,MAINT: Remove incorrect special case in string to number casts
Diffstat (limited to 'numpy/core/tests')
-rw-r--r-- | numpy/core/tests/test_longdouble.py | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/numpy/core/tests/test_longdouble.py b/numpy/core/tests/test_longdouble.py index bf12f0e1b..acef995f3 100644 --- a/numpy/core/tests/test_longdouble.py +++ b/numpy/core/tests/test_longdouble.py @@ -37,22 +37,36 @@ def test_repr_roundtrip(): assert_equal(np.longdouble(repr(o)), o, "repr was %s" % repr(o)) -def test_unicode(): - np.longdouble(u"1.2") +@pytest.mark.skipif(string_to_longdouble_inaccurate, reason="Need strtold_l") +def test_repr_roundtrip_bytes(): + o = 1 + LD_INFO.eps + assert_equal(np.longdouble(repr(o).encode("ascii")), o) -def test_string(): - np.longdouble("1.2") +@pytest.mark.skipif(string_to_longdouble_inaccurate, reason="Need strtold_l") +@pytest.mark.parametrize("strtype", (np.str_, np.bytes_, str, bytes)) +def test_array_and_stringlike_roundtrip(strtype): + """ + Test that string representations of long-double roundtrip both + for array casting and scalar coercion, see also gh-15608. + """ + o = 1 + LD_INFO.eps + if strtype in (np.bytes_, bytes): + o_str = strtype(repr(o).encode("ascii")) + else: + o_str = strtype(repr(o)) -def test_bytes(): - np.longdouble(b"1.2") + # Test that `o` is correctly coerced from the string-like + assert o == np.longdouble(o_str) + # Test that arrays also roundtrip correctly: + o_strarr = np.asarray([o] * 3, dtype=strtype) + assert (o == o_strarr.astype(np.longdouble)).all() -@pytest.mark.skipif(string_to_longdouble_inaccurate, reason="Need strtold_l") -def test_repr_roundtrip_bytes(): - o = 1 + LD_INFO.eps - assert_equal(np.longdouble(repr(o).encode("ascii")), o) + # And array coercion and casting to string give the same as scalar repr: + assert (o_strarr == o_str).all() + assert (np.asarray([o] * 3).astype(strtype) == o_str).all() def test_bogus_string(): |