| Viewing file:  test_scalarinherit.py (2.31 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
""" Test printing of scalar types.
 """
 import pytest
 
 import numpy as np
 from numpy.testing import assert_, assert_raises
 
 
 class A:
 pass
 class B(A, np.float64):
 pass
 
 class C(B):
 pass
 class D(C, B):
 pass
 
 class B0(np.float64, A):
 pass
 class C0(B0):
 pass
 
 class HasNew:
 def __new__(cls, *args, **kwargs):
 return cls, args, kwargs
 
 class B1(np.float64, HasNew):
 pass
 
 
 class TestInherit:
 def test_init(self):
 x = B(1.0)
 assert_(str(x) == '1.0')
 y = C(2.0)
 assert_(str(y) == '2.0')
 z = D(3.0)
 assert_(str(z) == '3.0')
 
 def test_init2(self):
 x = B0(1.0)
 assert_(str(x) == '1.0')
 y = C0(2.0)
 assert_(str(y) == '2.0')
 
 def test_gh_15395(self):
 # HasNew is the second base, so `np.float64` should have priority
 x = B1(1.0)
 assert_(str(x) == '1.0')
 
 # previously caused RecursionError!?
 with pytest.raises(TypeError):
 B1(1.0, 2.0)
 
 
 class TestCharacter:
 def test_char_radd(self):
 # GH issue 9620, reached gentype_add and raise TypeError
 np_s = np.bytes_('abc')
 np_u = np.str_('abc')
 s = b'def'
 u = 'def'
 assert_(np_s.__radd__(np_s) is NotImplemented)
 assert_(np_s.__radd__(np_u) is NotImplemented)
 assert_(np_s.__radd__(s) is NotImplemented)
 assert_(np_s.__radd__(u) is NotImplemented)
 assert_(np_u.__radd__(np_s) is NotImplemented)
 assert_(np_u.__radd__(np_u) is NotImplemented)
 assert_(np_u.__radd__(s) is NotImplemented)
 assert_(np_u.__radd__(u) is NotImplemented)
 assert_(s + np_s == b'defabc')
 assert_(u + np_u == 'defabc')
 
 class MyStr(str, np.generic):
 # would segfault
 pass
 
 with assert_raises(TypeError):
 # Previously worked, but gave completely wrong result
 ret = s + MyStr('abc')
 
 class MyBytes(bytes, np.generic):
 # would segfault
 pass
 
 ret = s + MyBytes(b'abc')
 assert(type(ret) is type(s))
 assert ret == b"defabc"
 
 def test_char_repeat(self):
 np_s = np.bytes_('abc')
 np_u = np.str_('abc')
 res_s = b'abc' * 5
 res_u = 'abc' * 5
 assert_(np_s * 5 == res_s)
 assert_(np_u * 5 == res_u)
 
 |