| """Tests for polyutils module. |
| |
| """ |
| import numpy as np |
| import numpy.polynomial.polyutils as pu |
| from numpy.testing import assert_, assert_almost_equal, assert_equal, assert_raises |
|
|
|
|
| class TestMisc: |
|
|
| def test_trimseq(self): |
| tgt = [1] |
| for num_trailing_zeros in range(5): |
| res = pu.trimseq([1] + [0] * num_trailing_zeros) |
| assert_equal(res, tgt) |
|
|
| def test_trimseq_empty_input(self): |
| for empty_seq in [[], np.array([], dtype=np.int32)]: |
| assert_equal(pu.trimseq(empty_seq), empty_seq) |
|
|
| def test_as_series(self): |
| |
| assert_raises(ValueError, pu.as_series, [[]]) |
| assert_raises(ValueError, pu.as_series, [[[1, 2]]]) |
| assert_raises(ValueError, pu.as_series, [[1], ['a']]) |
| |
| types = ['i', 'd', 'O'] |
| for i in range(len(types)): |
| for j in range(i): |
| ci = np.ones(1, types[i]) |
| cj = np.ones(1, types[j]) |
| [resi, resj] = pu.as_series([ci, cj]) |
| assert_(resi.dtype.char == resj.dtype.char) |
| assert_(resj.dtype.char == types[i]) |
|
|
| def test_trimcoef(self): |
| coef = [2, -1, 1, 0] |
| |
| assert_raises(ValueError, pu.trimcoef, coef, -1) |
| |
| assert_equal(pu.trimcoef(coef), coef[:-1]) |
| assert_equal(pu.trimcoef(coef, 1), coef[:-3]) |
| assert_equal(pu.trimcoef(coef, 2), [0]) |
|
|
| def test_vander_nd_exception(self): |
| |
| assert_raises(ValueError, pu._vander_nd, (), (1, 2, 3), [90]) |
| |
| assert_raises(ValueError, pu._vander_nd, (), (), [90.65]) |
| |
| assert_raises(ValueError, pu._vander_nd, (), (), []) |
|
|
| def test_div_zerodiv(self): |
| |
| assert_raises(ZeroDivisionError, pu._div, pu._div, (1, 2, 3), [0]) |
|
|
| def test_pow_too_large(self): |
| |
| assert_raises(ValueError, pu._pow, (), [1, 2, 3], 5, 4) |
|
|
| class TestDomain: |
|
|
| def test_getdomain(self): |
| |
| x = [1, 10, 3, -1] |
| tgt = [-1, 10] |
| res = pu.getdomain(x) |
| assert_almost_equal(res, tgt) |
|
|
| |
| x = [1 + 1j, 1 - 1j, 0, 2] |
| tgt = [-1j, 2 + 1j] |
| res = pu.getdomain(x) |
| assert_almost_equal(res, tgt) |
|
|
| def test_mapdomain(self): |
| |
| dom1 = [0, 4] |
| dom2 = [1, 3] |
| tgt = dom2 |
| res = pu.mapdomain(dom1, dom1, dom2) |
| assert_almost_equal(res, tgt) |
|
|
| |
| dom1 = [0 - 1j, 2 + 1j] |
| dom2 = [-2, 2] |
| tgt = dom2 |
| x = dom1 |
| res = pu.mapdomain(x, dom1, dom2) |
| assert_almost_equal(res, tgt) |
|
|
| |
| dom1 = [0, 4] |
| dom2 = [1, 3] |
| tgt = np.array([dom2, dom2]) |
| x = np.array([dom1, dom1]) |
| res = pu.mapdomain(x, dom1, dom2) |
| assert_almost_equal(res, tgt) |
|
|
| |
| class MyNDArray(np.ndarray): |
| pass |
|
|
| dom1 = [0, 4] |
| dom2 = [1, 3] |
| x = np.array([dom1, dom1]).view(MyNDArray) |
| res = pu.mapdomain(x, dom1, dom2) |
| assert_(isinstance(res, MyNDArray)) |
|
|
| def test_mapparms(self): |
| |
| dom1 = [0, 4] |
| dom2 = [1, 3] |
| tgt = [1, .5] |
| res = pu. mapparms(dom1, dom2) |
| assert_almost_equal(res, tgt) |
|
|
| |
| dom1 = [0 - 1j, 2 + 1j] |
| dom2 = [-2, 2] |
| tgt = [-1 + 1j, 1 - 1j] |
| res = pu.mapparms(dom1, dom2) |
| assert_almost_equal(res, tgt) |
|
|