def test_to_ndarray(sut, shape_full, dtype): # Arrange sut_data, data = generate_data(sut, shape_full, dtype) # Act actual = sut.to_ndarray(sut_data) expected = backend.to_ndarray(data) # Assert np.testing.assert_array_equal(actual, expected)
def test_from_ndarray(sut, dtype_full, shape_full): # Arrange ndarray = np.empty(shape=shape_full, dtype=dtype_full) try: # Act actual = sut.from_ndarray(ndarray) expected = backend.from_ndarray(ndarray) # Assert np.testing.assert_array_equal(sut.to_ndarray(actual), backend.to_ndarray(expected)) except NotImplementedError: if dtype_full in (float, int): assert False
def test_urand_seed_reproduction(sut, shape_1d): # Arrange sut_data, data = generate_data(sut, shape_1d, float) seed = 0 # Act sut_seed_ndarray = [] seed_ndarray = [] for i in range(2): sut.urand(sut_data, seed) backend.urand(data, seed) sut_seed_ndarray.append(sut.to_ndarray(sut_data)) seed_ndarray.append(backend.to_ndarray(data)) # Assert np.testing.assert_array_equal(seed_ndarray[0], seed_ndarray[1]) np.testing.assert_array_equal(sut_seed_ndarray[0], sut_seed_ndarray[1])
def test_upload(sut, shape_full, dtype): # Arrange np.random.seed(44) numpy_data = np.random.rand(*shape_full).astype(dtype) sut_numpy_data = np.empty(shape_full) sut_numpy_data[:] = numpy_data[:] sut_backend_target, backend_target = generate_data( sut, shape_full, dtype) # Act backend.upload(numpy_data, backend_target) sut.upload(sut_numpy_data, sut_backend_target) # Assert np.testing.assert_array_equal(sut.to_ndarray(sut_backend_target), backend.to_ndarray(backend_target)) np.testing.assert_array_equal(sut_numpy_data, numpy_data)
def test_urand_seed_response(sut, shape_1d): # Arrange sut_data, data = generate_data(sut, shape_1d, float) # Act sut_seed_ndarray = [] seed_ndarray = [] for i in range(2): sut.urand(sut_data, seed=i) backend.urand(data, seed=i) sut_seed_ndarray.append(sut.to_ndarray(sut_data)) seed_ndarray.append(backend.to_ndarray(data)) # Assert TestMathsMethods.assert_array_significantly_different( seed_ndarray[0], seed_ndarray[1]) TestMathsMethods.assert_array_significantly_different( sut_seed_ndarray[0], sut_seed_ndarray[1])
def test_download(sut, shape_full, dtype): # Arrange sut_backend_data, backend_data = generate_data(sut, shape_full, dtype) if dtype is int: np_dtype = np.int64 elif dtype is float: np_dtype = np.float64 else: raise NotImplementedError() numpy_target = np.empty(shape_full, np_dtype) sut_numpy_target = np.empty(shape_full, np_dtype) # Act backend.download(backend_data, numpy_target) sut.download(sut_backend_data, sut_numpy_target) # Assert np.testing.assert_array_equal(sut_numpy_target, numpy_target) np.testing.assert_array_equal(sut.to_ndarray(sut_backend_data), backend.to_ndarray(backend_data))