Chris@87
|
1 """Tests for polyutils module.
|
Chris@87
|
2
|
Chris@87
|
3 """
|
Chris@87
|
4 from __future__ import division, absolute_import, print_function
|
Chris@87
|
5
|
Chris@87
|
6 import numpy as np
|
Chris@87
|
7 import numpy.polynomial.polyutils as pu
|
Chris@87
|
8 from numpy.testing import (
|
Chris@87
|
9 TestCase, assert_almost_equal, assert_raises,
|
Chris@87
|
10 assert_equal, assert_, run_module_suite)
|
Chris@87
|
11
|
Chris@87
|
12
|
Chris@87
|
13 class TestMisc(TestCase):
|
Chris@87
|
14
|
Chris@87
|
15 def test_trimseq(self):
|
Chris@87
|
16 for i in range(5):
|
Chris@87
|
17 tgt = [1]
|
Chris@87
|
18 res = pu.trimseq([1] + [0]*5)
|
Chris@87
|
19 assert_equal(res, tgt)
|
Chris@87
|
20
|
Chris@87
|
21 def test_as_series(self):
|
Chris@87
|
22 # check exceptions
|
Chris@87
|
23 assert_raises(ValueError, pu.as_series, [[]])
|
Chris@87
|
24 assert_raises(ValueError, pu.as_series, [[[1, 2]]])
|
Chris@87
|
25 assert_raises(ValueError, pu.as_series, [[1], ['a']])
|
Chris@87
|
26 # check common types
|
Chris@87
|
27 types = ['i', 'd', 'O']
|
Chris@87
|
28 for i in range(len(types)):
|
Chris@87
|
29 for j in range(i):
|
Chris@87
|
30 ci = np.ones(1, types[i])
|
Chris@87
|
31 cj = np.ones(1, types[j])
|
Chris@87
|
32 [resi, resj] = pu.as_series([ci, cj])
|
Chris@87
|
33 assert_(resi.dtype.char == resj.dtype.char)
|
Chris@87
|
34 assert_(resj.dtype.char == types[i])
|
Chris@87
|
35
|
Chris@87
|
36 def test_trimcoef(self):
|
Chris@87
|
37 coef = [2, -1, 1, 0]
|
Chris@87
|
38 # Test exceptions
|
Chris@87
|
39 assert_raises(ValueError, pu.trimcoef, coef, -1)
|
Chris@87
|
40 # Test results
|
Chris@87
|
41 assert_equal(pu.trimcoef(coef), coef[:-1])
|
Chris@87
|
42 assert_equal(pu.trimcoef(coef, 1), coef[:-3])
|
Chris@87
|
43 assert_equal(pu.trimcoef(coef, 2), [0])
|
Chris@87
|
44
|
Chris@87
|
45
|
Chris@87
|
46 class TestDomain(TestCase):
|
Chris@87
|
47
|
Chris@87
|
48 def test_getdomain(self):
|
Chris@87
|
49 # test for real values
|
Chris@87
|
50 x = [1, 10, 3, -1]
|
Chris@87
|
51 tgt = [-1, 10]
|
Chris@87
|
52 res = pu.getdomain(x)
|
Chris@87
|
53 assert_almost_equal(res, tgt)
|
Chris@87
|
54
|
Chris@87
|
55 # test for complex values
|
Chris@87
|
56 x = [1 + 1j, 1 - 1j, 0, 2]
|
Chris@87
|
57 tgt = [-1j, 2 + 1j]
|
Chris@87
|
58 res = pu.getdomain(x)
|
Chris@87
|
59 assert_almost_equal(res, tgt)
|
Chris@87
|
60
|
Chris@87
|
61 def test_mapdomain(self):
|
Chris@87
|
62 # test for real values
|
Chris@87
|
63 dom1 = [0, 4]
|
Chris@87
|
64 dom2 = [1, 3]
|
Chris@87
|
65 tgt = dom2
|
Chris@87
|
66 res = pu. mapdomain(dom1, dom1, dom2)
|
Chris@87
|
67 assert_almost_equal(res, tgt)
|
Chris@87
|
68
|
Chris@87
|
69 # test for complex values
|
Chris@87
|
70 dom1 = [0 - 1j, 2 + 1j]
|
Chris@87
|
71 dom2 = [-2, 2]
|
Chris@87
|
72 tgt = dom2
|
Chris@87
|
73 x = dom1
|
Chris@87
|
74 res = pu.mapdomain(x, dom1, dom2)
|
Chris@87
|
75 assert_almost_equal(res, tgt)
|
Chris@87
|
76
|
Chris@87
|
77 # test for multidimensional arrays
|
Chris@87
|
78 dom1 = [0, 4]
|
Chris@87
|
79 dom2 = [1, 3]
|
Chris@87
|
80 tgt = np.array([dom2, dom2])
|
Chris@87
|
81 x = np.array([dom1, dom1])
|
Chris@87
|
82 res = pu.mapdomain(x, dom1, dom2)
|
Chris@87
|
83 assert_almost_equal(res, tgt)
|
Chris@87
|
84
|
Chris@87
|
85 # test that subtypes are preserved.
|
Chris@87
|
86 dom1 = [0, 4]
|
Chris@87
|
87 dom2 = [1, 3]
|
Chris@87
|
88 x = np.matrix([dom1, dom1])
|
Chris@87
|
89 res = pu.mapdomain(x, dom1, dom2)
|
Chris@87
|
90 assert_(isinstance(res, np.matrix))
|
Chris@87
|
91
|
Chris@87
|
92 def test_mapparms(self):
|
Chris@87
|
93 # test for real values
|
Chris@87
|
94 dom1 = [0, 4]
|
Chris@87
|
95 dom2 = [1, 3]
|
Chris@87
|
96 tgt = [1, .5]
|
Chris@87
|
97 res = pu. mapparms(dom1, dom2)
|
Chris@87
|
98 assert_almost_equal(res, tgt)
|
Chris@87
|
99
|
Chris@87
|
100 # test for complex values
|
Chris@87
|
101 dom1 = [0 - 1j, 2 + 1j]
|
Chris@87
|
102 dom2 = [-2, 2]
|
Chris@87
|
103 tgt = [-1 + 1j, 1 - 1j]
|
Chris@87
|
104 res = pu.mapparms(dom1, dom2)
|
Chris@87
|
105 assert_almost_equal(res, tgt)
|
Chris@87
|
106
|
Chris@87
|
107
|
Chris@87
|
108 if __name__ == "__main__":
|
Chris@87
|
109 run_module_suite()
|