import afnumpy import numpy from numpy.testing import assert_allclose import numbers def massert(af_a, np_a): # Assert the metadata of the arrays if isinstance(af_a, tuple): assert(af_a == np_a) elif isinstance(af_a, afnumpy.ndarray): assert isinstance(np_a, numpy.ndarray) # I will not strictly enforce float32 vs float64 # I will not strictly enforce uint32 vs int64 assert (af_a.dtype == np_a.dtype or (af_a.dtype == numpy.float32 and np_a.dtype == numpy.float64) or (af_a.dtype == numpy.uint32 and np_a.dtype == numpy.int64) or (af_a.dtype == numpy.int64 and np_a.dtype == numpy.uint32) or (af_a.dtype == numpy.int32 and np_a.dtype == numpy.int64)) assert (af_a.shape == np_a.shape) elif isinstance(af_a, numbers.Number): assert isinstance(af_a, numbers.Number) assert isinstance(np_a, numbers.Number) elif isinstance(af_a, numpy.number): assert isinstance(af_a, numpy.number) assert isinstance(np_a, numpy.number) else: assert type(af_a) == type(np_a) def iassert(af_a, np_a): if not isinstance(af_a, tuple) and not isinstance(af_a, list): af_a = (af_a,) np_a = (np_a,) for a,b in zip(af_a,np_a): assert numpy.all(numpy.array(a) == b) massert(a, b) def fassert(af_a, np_a): numpy.testing.assert_allclose(numpy.array(af_a), np_a) massert(af_a, np_a)