summaryrefslogtreecommitdiff
path: root/numpy/core/tests/test_defchararray.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/core/tests/test_defchararray.py')
-rw-r--r--numpy/core/tests/test_defchararray.py88
1 files changed, 51 insertions, 37 deletions
diff --git a/numpy/core/tests/test_defchararray.py b/numpy/core/tests/test_defchararray.py
index 22296604e..39699f457 100644
--- a/numpy/core/tests/test_defchararray.py
+++ b/numpy/core/tests/test_defchararray.py
@@ -1,3 +1,5 @@
+import pytest
+
import numpy as np
from numpy.core.multiarray import _vec_string
from numpy.testing import (
@@ -29,7 +31,7 @@ class TestBasic:
def test_from_string_array(self):
A = np.array([[b'abc', b'foo'],
[b'long ', b'0123456789']])
- assert_equal(A.dtype.type, np.string_)
+ assert_equal(A.dtype.type, np.bytes_)
B = np.char.array(A)
assert_array_equal(B, A)
assert_equal(B.dtype, A.dtype)
@@ -46,7 +48,7 @@ class TestBasic:
def test_from_unicode_array(self):
A = np.array([['abc', 'Sigma \u03a3'],
['long ', '0123456789']])
- assert_equal(A.dtype.type, np.unicode_)
+ assert_equal(A.dtype.type, np.str_)
B = np.char.array(A)
assert_array_equal(B, A)
assert_equal(B.dtype, A.dtype)
@@ -64,40 +66,40 @@ class TestBasic:
def test_unicode_upconvert(self):
A = np.char.array(['abc'])
B = np.char.array(['\u03a3'])
- assert_(issubclass((A + B).dtype.type, np.unicode_))
+ assert_(issubclass((A + B).dtype.type, np.str_))
def test_from_string(self):
A = np.char.array(b'abc')
assert_equal(len(A), 1)
assert_equal(len(A[0]), 3)
- assert_(issubclass(A.dtype.type, np.string_))
+ assert_(issubclass(A.dtype.type, np.bytes_))
def test_from_unicode(self):
A = np.char.array('\u03a3')
assert_equal(len(A), 1)
assert_equal(len(A[0]), 1)
assert_equal(A.itemsize, 4)
- assert_(issubclass(A.dtype.type, np.unicode_))
+ assert_(issubclass(A.dtype.type, np.str_))
class TestVecString:
def test_non_existent_method(self):
def fail():
- _vec_string('a', np.string_, 'bogus')
+ _vec_string('a', np.bytes_, 'bogus')
assert_raises(AttributeError, fail)
def test_non_string_array(self):
def fail():
- _vec_string(1, np.string_, 'strip')
+ _vec_string(1, np.bytes_, 'strip')
assert_raises(TypeError, fail)
def test_invalid_args_tuple(self):
def fail():
- _vec_string(['a'], np.string_, 'strip', 1)
+ _vec_string(['a'], np.bytes_, 'strip', 1)
assert_raises(TypeError, fail)
@@ -111,7 +113,7 @@ class TestVecString:
def test_invalid_function_args(self):
def fail():
- _vec_string(['a'], np.string_, 'strip', (1,))
+ _vec_string(['a'], np.bytes_, 'strip', (1,))
assert_raises(TypeError, fail)
@@ -190,7 +192,7 @@ class TestComparisonsMixed1(TestComparisons):
def setup_method(self):
TestComparisons.setup_method(self)
self.B = np.array([['efg', '123 '],
- ['051', 'tuv']], np.unicode_).view(np.chararray)
+ ['051', 'tuv']], np.str_).view(np.chararray)
class TestComparisonsMixed2(TestComparisons):
"""Ticket #1276"""
@@ -198,7 +200,7 @@ class TestComparisonsMixed2(TestComparisons):
def setup_method(self):
TestComparisons.setup_method(self)
self.A = np.array([['abc', '123'],
- ['789', 'xyz']], np.unicode_).view(np.chararray)
+ ['789', 'xyz']], np.str_).view(np.chararray)
class TestInformation:
def setup_method(self):
@@ -320,17 +322,17 @@ class TestMethods:
tgt = [[b' abc ', b''],
[b'12345', b'Mixedcase'],
[b'123 \t 345 \0 ', b'Upper']]
- assert_(issubclass(self.A.capitalize().dtype.type, np.string_))
+ assert_(issubclass(self.A.capitalize().dtype.type, np.bytes_))
assert_array_equal(self.A.capitalize(), tgt)
tgt = [[' \u03c3 ', ''],
['12345', 'Mixedcase'],
['123 \t 345 \0 ', 'Upper']]
- assert_(issubclass(self.B.capitalize().dtype.type, np.unicode_))
+ assert_(issubclass(self.B.capitalize().dtype.type, np.str_))
assert_array_equal(self.B.capitalize(), tgt)
def test_center(self):
- assert_(issubclass(self.A.center(10).dtype.type, np.string_))
+ assert_(issubclass(self.A.center(10).dtype.type, np.bytes_))
C = self.A.center([10, 20])
assert_array_equal(np.char.str_len(C), [[10, 20], [10, 20], [12, 20]])
@@ -341,7 +343,7 @@ class TestMethods:
C = np.char.center(b'FOO', [[10, 20], [15, 8]])
tgt = [[b' FOO ', b' FOO '],
[b' FOO ', b' FOO ']]
- assert_(issubclass(C.dtype.type, np.string_))
+ assert_(issubclass(C.dtype.type, np.bytes_))
assert_array_equal(C, tgt)
def test_decode(self):
@@ -362,14 +364,14 @@ class TestMethods:
A0 = self.A.decode('ascii')
A = np.char.join([',', '#'], A0)
- assert_(issubclass(A.dtype.type, np.unicode_))
+ assert_(issubclass(A.dtype.type, np.str_))
tgt = np.array([[' ,a,b,c, ', ''],
['1,2,3,4,5', 'M#i#x#e#d#C#a#s#e'],
['1,2,3, ,\t, ,3,4,5, ,\x00, ', 'U#P#P#E#R']])
assert_array_equal(np.char.join([',', '#'], A0), tgt)
def test_ljust(self):
- assert_(issubclass(self.A.ljust(10).dtype.type, np.string_))
+ assert_(issubclass(self.A.ljust(10).dtype.type, np.bytes_))
C = self.A.ljust([10, 20])
assert_array_equal(np.char.str_len(C), [[10, 20], [10, 20], [12, 20]])
@@ -382,27 +384,27 @@ class TestMethods:
C = np.char.ljust(b'FOO', [[10, 20], [15, 8]])
tgt = [[b'FOO ', b'FOO '],
[b'FOO ', b'FOO ']]
- assert_(issubclass(C.dtype.type, np.string_))
+ assert_(issubclass(C.dtype.type, np.bytes_))
assert_array_equal(C, tgt)
def test_lower(self):
tgt = [[b' abc ', b''],
[b'12345', b'mixedcase'],
[b'123 \t 345 \0 ', b'upper']]
- assert_(issubclass(self.A.lower().dtype.type, np.string_))
+ assert_(issubclass(self.A.lower().dtype.type, np.bytes_))
assert_array_equal(self.A.lower(), tgt)
tgt = [[' \u03c3 ', ''],
['12345', 'mixedcase'],
['123 \t 345 \0 ', 'upper']]
- assert_(issubclass(self.B.lower().dtype.type, np.unicode_))
+ assert_(issubclass(self.B.lower().dtype.type, np.str_))
assert_array_equal(self.B.lower(), tgt)
def test_lstrip(self):
tgt = [[b'abc ', b''],
[b'12345', b'MixedCase'],
[b'123 \t 345 \0 ', b'UPPER']]
- assert_(issubclass(self.A.lstrip().dtype.type, np.string_))
+ assert_(issubclass(self.A.lstrip().dtype.type, np.bytes_))
assert_array_equal(self.A.lstrip(), tgt)
tgt = [[b' abc', b''],
@@ -413,7 +415,7 @@ class TestMethods:
tgt = [['\u03a3 ', ''],
['12345', 'MixedCase'],
['123 \t 345 \0 ', 'UPPER']]
- assert_(issubclass(self.B.lstrip().dtype.type, np.unicode_))
+ assert_(issubclass(self.B.lstrip().dtype.type, np.str_))
assert_array_equal(self.B.lstrip(), tgt)
def test_partition(self):
@@ -421,7 +423,7 @@ class TestMethods:
tgt = [[(b' abc ', b'', b''), (b'', b'', b'')],
[(b'12', b'3', b'45'), (b'', b'M', b'ixedCase')],
[(b'12', b'3', b' \t 345 \0 '), (b'UPPER', b'', b'')]]
- assert_(issubclass(P.dtype.type, np.string_))
+ assert_(issubclass(P.dtype.type, np.bytes_))
assert_array_equal(P, tgt)
def test_replace(self):
@@ -430,11 +432,11 @@ class TestMethods:
tgt = [[b' abc ', b''],
[b'12##########45', b'MixedC@se'],
[b'12########## \t ##########45 \x00', b'UPPER']]
- assert_(issubclass(R.dtype.type, np.string_))
+ assert_(issubclass(R.dtype.type, np.bytes_))
assert_array_equal(R, tgt)
def test_rjust(self):
- assert_(issubclass(self.A.rjust(10).dtype.type, np.string_))
+ assert_(issubclass(self.A.rjust(10).dtype.type, np.bytes_))
C = self.A.rjust([10, 20])
assert_array_equal(np.char.str_len(C), [[10, 20], [10, 20], [12, 20]])
@@ -447,7 +449,7 @@ class TestMethods:
C = np.char.rjust(b'FOO', [[10, 20], [15, 8]])
tgt = [[b' FOO', b' FOO'],
[b' FOO', b' FOO']]
- assert_(issubclass(C.dtype.type, np.string_))
+ assert_(issubclass(C.dtype.type, np.bytes_))
assert_array_equal(C, tgt)
def test_rpartition(self):
@@ -455,7 +457,7 @@ class TestMethods:
tgt = [[(b'', b'', b' abc '), (b'', b'', b'')],
[(b'12', b'3', b'45'), (b'', b'M', b'ixedCase')],
[(b'123 \t ', b'3', b'45 \0 '), (b'', b'', b'UPPER')]]
- assert_(issubclass(P.dtype.type, np.string_))
+ assert_(issubclass(P.dtype.type, np.bytes_))
assert_array_equal(P, tgt)
def test_rsplit(self):
@@ -467,7 +469,7 @@ class TestMethods:
assert_equal(A.tolist(), tgt)
def test_rstrip(self):
- assert_(issubclass(self.A.rstrip().dtype.type, np.string_))
+ assert_(issubclass(self.A.rstrip().dtype.type, np.bytes_))
tgt = [[b' abc', b''],
[b'12345', b'MixedCase'],
@@ -483,14 +485,14 @@ class TestMethods:
tgt = [[' \u03a3', ''],
['12345', 'MixedCase'],
['123 \t 345', 'UPPER']]
- assert_(issubclass(self.B.rstrip().dtype.type, np.unicode_))
+ assert_(issubclass(self.B.rstrip().dtype.type, np.str_))
assert_array_equal(self.B.rstrip(), tgt)
def test_strip(self):
tgt = [[b'abc', b''],
[b'12345', b'MixedCase'],
[b'123 \t 345', b'UPPER']]
- assert_(issubclass(self.A.strip().dtype.type, np.string_))
+ assert_(issubclass(self.A.strip().dtype.type, np.bytes_))
assert_array_equal(self.A.strip(), tgt)
tgt = [[b' abc ', b''],
@@ -501,7 +503,7 @@ class TestMethods:
tgt = [['\u03a3', ''],
['12345', 'MixedCase'],
['123 \t 345', 'UPPER']]
- assert_(issubclass(self.B.strip().dtype.type, np.unicode_))
+ assert_(issubclass(self.B.strip().dtype.type, np.str_))
assert_array_equal(self.B.strip(), tgt)
def test_split(self):
@@ -523,39 +525,39 @@ class TestMethods:
tgt = [[b' ABC ', b''],
[b'12345', b'mIXEDcASE'],
[b'123 \t 345 \0 ', b'upper']]
- assert_(issubclass(self.A.swapcase().dtype.type, np.string_))
+ assert_(issubclass(self.A.swapcase().dtype.type, np.bytes_))
assert_array_equal(self.A.swapcase(), tgt)
tgt = [[' \u03c3 ', ''],
['12345', 'mIXEDcASE'],
['123 \t 345 \0 ', 'upper']]
- assert_(issubclass(self.B.swapcase().dtype.type, np.unicode_))
+ assert_(issubclass(self.B.swapcase().dtype.type, np.str_))
assert_array_equal(self.B.swapcase(), tgt)
def test_title(self):
tgt = [[b' Abc ', b''],
[b'12345', b'Mixedcase'],
[b'123 \t 345 \0 ', b'Upper']]
- assert_(issubclass(self.A.title().dtype.type, np.string_))
+ assert_(issubclass(self.A.title().dtype.type, np.bytes_))
assert_array_equal(self.A.title(), tgt)
tgt = [[' \u03a3 ', ''],
['12345', 'Mixedcase'],
['123 \t 345 \0 ', 'Upper']]
- assert_(issubclass(self.B.title().dtype.type, np.unicode_))
+ assert_(issubclass(self.B.title().dtype.type, np.str_))
assert_array_equal(self.B.title(), tgt)
def test_upper(self):
tgt = [[b' ABC ', b''],
[b'12345', b'MIXEDCASE'],
[b'123 \t 345 \0 ', b'UPPER']]
- assert_(issubclass(self.A.upper().dtype.type, np.string_))
+ assert_(issubclass(self.A.upper().dtype.type, np.bytes_))
assert_array_equal(self.A.upper(), tgt)
tgt = [[' \u03a3 ', ''],
['12345', 'MIXEDCASE'],
['123 \t 345 \0 ', 'UPPER']]
- assert_(issubclass(self.B.upper().dtype.type, np.unicode_))
+ assert_(issubclass(self.B.upper().dtype.type, np.str_))
assert_array_equal(self.B.upper(), tgt)
def test_isnumeric(self):
@@ -670,3 +672,15 @@ def test_empty_indexing():
# empty chararray instead of a chararray with a single empty string in it.
s = np.chararray((4,))
assert_(s[[]].size == 0)
+
+
+@pytest.mark.parametrize(["dt1", "dt2"],
+ [("S", "U"), ("U", "S"), ("S", "O"), ("U", "O"),
+ ("S", "d"), ("S", "V")])
+def test_add_types(dt1, dt2):
+ arr1 = np.array([1234234], dtype=dt1)
+ # If the following fails, e.g. use a number and test "V" explicitly
+ arr2 = np.array([b"423"], dtype=dt2)
+ with pytest.raises(TypeError,
+ match=f".*same dtype kind.*{arr1.dtype}.*{arr2.dtype}"):
+ np.char.add(arr1, arr2)