import pytest import pystencils as ps import numpy as np # This test aims to trigger deprication warnings. Thus the warnings should not be displayed in the warning summary. import pystencils.config def test_create_kernel_backwards_compatibility(): size = (30, 20) src_field_string = np.random.rand(*size) src_field_enum = np.copy(src_field_string) src_field_config = np.copy(src_field_string) dst_field_string = np.zeros(size) dst_field_enum = np.zeros(size) dst_field_config = np.zeros(size) f = ps.Field.create_from_numpy_array("f", src_field_enum) d = ps.Field.create_from_numpy_array("d", dst_field_enum) jacobi = ps.Assignment(d[0, 0], (f[1, 0] + f[-1, 0] + f[0, 1] + f[0, -1]) / 4) ast_enum = ps.create_kernel(jacobi, target=ps.Target.CPU).compile() with pytest.warns(DeprecationWarning): ast_string = ps.create_kernel(jacobi, target='cpu').compile() # noinspection PyTypeChecker with pytest.warns(DeprecationWarning): ast_config = ps.create_kernel(jacobi, config=pystencils.config.CreateKernelConfig(target='cpu')).compile() ast_enum(f=src_field_enum, d=dst_field_enum) ast_string(f=src_field_string, d=dst_field_string) ast_config(f=src_field_config, d=dst_field_config) error = np.sum(np.abs(dst_field_enum - dst_field_string)) np.testing.assert_almost_equal(error, 0.0) error = np.sum(np.abs(dst_field_enum - dst_field_config)) np.testing.assert_almost_equal(error, 0.0)