Chris@87: """Tests for polyutils module. Chris@87: Chris@87: """ Chris@87: from __future__ import division, absolute_import, print_function Chris@87: Chris@87: import numpy as np Chris@87: import numpy.polynomial.polyutils as pu Chris@87: from numpy.testing import ( Chris@87: TestCase, assert_almost_equal, assert_raises, Chris@87: assert_equal, assert_, run_module_suite) Chris@87: Chris@87: Chris@87: class TestMisc(TestCase): Chris@87: Chris@87: def test_trimseq(self): Chris@87: for i in range(5): Chris@87: tgt = [1] Chris@87: res = pu.trimseq([1] + [0]*5) Chris@87: assert_equal(res, tgt) Chris@87: Chris@87: def test_as_series(self): Chris@87: # check exceptions Chris@87: assert_raises(ValueError, pu.as_series, [[]]) Chris@87: assert_raises(ValueError, pu.as_series, [[[1, 2]]]) Chris@87: assert_raises(ValueError, pu.as_series, [[1], ['a']]) Chris@87: # check common types Chris@87: types = ['i', 'd', 'O'] Chris@87: for i in range(len(types)): Chris@87: for j in range(i): Chris@87: ci = np.ones(1, types[i]) Chris@87: cj = np.ones(1, types[j]) Chris@87: [resi, resj] = pu.as_series([ci, cj]) Chris@87: assert_(resi.dtype.char == resj.dtype.char) Chris@87: assert_(resj.dtype.char == types[i]) Chris@87: Chris@87: def test_trimcoef(self): Chris@87: coef = [2, -1, 1, 0] Chris@87: # Test exceptions Chris@87: assert_raises(ValueError, pu.trimcoef, coef, -1) Chris@87: # Test results Chris@87: assert_equal(pu.trimcoef(coef), coef[:-1]) Chris@87: assert_equal(pu.trimcoef(coef, 1), coef[:-3]) Chris@87: assert_equal(pu.trimcoef(coef, 2), [0]) Chris@87: Chris@87: Chris@87: class TestDomain(TestCase): Chris@87: Chris@87: def test_getdomain(self): Chris@87: # test for real values Chris@87: x = [1, 10, 3, -1] Chris@87: tgt = [-1, 10] Chris@87: res = pu.getdomain(x) Chris@87: assert_almost_equal(res, tgt) Chris@87: Chris@87: # test for complex values Chris@87: x = [1 + 1j, 1 - 1j, 0, 2] Chris@87: tgt = [-1j, 2 + 1j] Chris@87: res = pu.getdomain(x) Chris@87: assert_almost_equal(res, tgt) Chris@87: Chris@87: def test_mapdomain(self): Chris@87: # test for real values Chris@87: dom1 = [0, 4] Chris@87: dom2 = [1, 3] Chris@87: tgt = dom2 Chris@87: res = pu. mapdomain(dom1, dom1, dom2) Chris@87: assert_almost_equal(res, tgt) Chris@87: Chris@87: # test for complex values Chris@87: dom1 = [0 - 1j, 2 + 1j] Chris@87: dom2 = [-2, 2] Chris@87: tgt = dom2 Chris@87: x = dom1 Chris@87: res = pu.mapdomain(x, dom1, dom2) Chris@87: assert_almost_equal(res, tgt) Chris@87: Chris@87: # test for multidimensional arrays Chris@87: dom1 = [0, 4] Chris@87: dom2 = [1, 3] Chris@87: tgt = np.array([dom2, dom2]) Chris@87: x = np.array([dom1, dom1]) Chris@87: res = pu.mapdomain(x, dom1, dom2) Chris@87: assert_almost_equal(res, tgt) Chris@87: Chris@87: # test that subtypes are preserved. Chris@87: dom1 = [0, 4] Chris@87: dom2 = [1, 3] Chris@87: x = np.matrix([dom1, dom1]) Chris@87: res = pu.mapdomain(x, dom1, dom2) Chris@87: assert_(isinstance(res, np.matrix)) Chris@87: Chris@87: def test_mapparms(self): Chris@87: # test for real values Chris@87: dom1 = [0, 4] Chris@87: dom2 = [1, 3] Chris@87: tgt = [1, .5] Chris@87: res = pu. mapparms(dom1, dom2) Chris@87: assert_almost_equal(res, tgt) Chris@87: Chris@87: # test for complex values Chris@87: dom1 = [0 - 1j, 2 + 1j] Chris@87: dom2 = [-2, 2] Chris@87: tgt = [-1 + 1j, 1 - 1j] Chris@87: res = pu.mapparms(dom1, dom2) Chris@87: assert_almost_equal(res, tgt) Chris@87: Chris@87: Chris@87: if __name__ == "__main__": Chris@87: run_module_suite()