''' Created on 14. feb. 2016 @author: pab ''' import unittest import numpy as np from numpy.testing import assert_array_almost_equal import wafo.dctpack as wd class Test(unittest.TestCase): def test_shiftdim(self): a = np.arange(6).reshape((1, 1, 3, 1, 2)) b = wd.shiftdim(a) c = wd.shiftdim(b, -2) assert_array_almost_equal(b.shape, (3, 1, 2)) assert_array_almost_equal(c.shape, a.shape) assert_array_almost_equal(c, a) def _test_3d(self, dct, idct, dctn, idctn): a = np.array([[[0.51699637, 0.42946223, 0.89843545], [0.27853391, 0.8931508, 0.34319118], [0.51984431, 0.09217771, 0.78764716]], [[0.25019845, 0.92622331, 0.06111409], [0.81363641, 0.06093368, 0.13123373], [0.47268657, 0.39635091, 0.77978269]], [[0.86098829, 0.07901332, 0.82169182], [0.12560088, 0.78210188, 0.69805434], [0.33544628, 0.81540172, 0.9393219]]]) d = dct(dct(dct(a).transpose(0, 2, 1)).transpose(2, 1, 0) ).transpose(2, 1, 0).transpose(0, 2, 1) d0 = dctn(a) e0 = idctn(d0) e = idct(idct(idct(d).transpose(0, 2, 1)).transpose(2, 1, 0) ).transpose(2, 1, 0).transpose(0, 2, 1) assert_array_almost_equal(d, d0) assert_array_almost_equal(e, e0) assert_array_almost_equal(a, e) def test_3d_dct_idct_dctn_idctn(self): self._test_3d(wd.dct, wd.idct, wd.dctn, wd.idctn) def test_3d_dst_idst_dstn_idstn(self): self._test_3d(wd.dst, wd.idst, wd.dstn, wd.idstn) def test_dct_and_dctn(self): self._test_1d(wd.dct, wd.idct, wd.dctn, wd.idctn) def test_dst_and_dstn(self): self._test_1d(wd.dst, wd.idst, wd.dstn, wd.idstn) def _test_1d(self, dct, idct, dctn, idctn): a = np.arange(12) # .reshape((3, -1)) y = dct(a) yn = dctn(a) x = idct(y) xn = idctn(yn) assert_array_almost_equal(y, yn) assert_array_almost_equal(x, a) assert_array_almost_equal(xn, a) if __name__ == "__main__": # import sys;sys.argv = ['', 'Test.testName'] unittest.main()