inf and nan in data
[PyX/mjg.git] / test / unit / test_path.py
blob9e497158f44ccabde928fd5b05c092b8b160b46d
1 import sys
2 if sys.path[0] != "../..":
3 sys.path.insert(0, "../..")
5 import unittest
7 from pyx import *
8 from pyx.path import *
10 epsilon = 1e-5
11 def isEqual(l1, l2):
12 return abs(unit.topt(l1-l2))<epsilon
15 class NormpathTestCase(unittest.TestCase):
16 def testsplit(self):
17 p = path(moveto(0,0), lineto(1,0), moveto(2,0), lineto(3,0))
18 np = normpath(p)
20 # one split parameter
21 sp = np.split([0])
22 assert len(sp)==2 and sp[0] is None and isEqual(sp[1].arclen(), 2)
24 sp = np.split([0.5])
25 assert len(sp)==2 and isEqual(sp[0].arclen(), 0.5) and isEqual(sp[1].arclen(), 1.5)
27 sp = np.split([1])
28 assert len(sp)==2 and isEqual(sp[0].arclen(), 1) and isEqual(sp[1].arclen(), 1)
30 sp = np.split([1.5])
31 assert len(sp)==2 and isEqual(sp[0].arclen(), 1.5) and isEqual(sp[1].arclen(), 0.5)
33 sp = np.split([2])
34 assert len(sp)==2 and isEqual(sp[0].arclen(), 2) and sp[1] is None
36 # two split parameters
37 sp = np.split([0, 0.5])
38 assert len(sp)==3 and sp[0] is None and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 1.5)
40 sp = np.split([0, 1])
41 assert len(sp)==3 and sp[0] is None and isEqual(sp[1].arclen(), 1) and isEqual(sp[2].arclen(), 1)
43 sp = np.split([0, 1.5])
44 assert len(sp)==3 and sp[0] is None and isEqual(sp[1].arclen(), 1.5) and isEqual(sp[2].arclen(), 0.5)
46 sp = np.split([0, 2])
47 assert len(sp)==3 and sp[0] is None and isEqual(sp[1].arclen(), 2) and sp[2] is None
49 sp = np.split([0.5, 1])
50 assert len(sp)==3 and isEqual(sp[0].arclen(), 0.5) and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 1)
52 sp = np.split([0.5, 1.5])
53 assert len(sp)==3 and isEqual(sp[0].arclen(), 0.5) and isEqual(sp[1].arclen(), 1) and isEqual(sp[2].arclen(), 0.5)
55 sp = np.split([0.5, 2])
56 assert len(sp)==3 and isEqual(sp[0].arclen(), 0.5) and isEqual(sp[1].arclen(), 1.5) and sp[2] is None
58 sp = np.split([1, 1.5])
59 assert len(sp)==3 and isEqual(sp[0].arclen(), 1) and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 0.5)
61 sp = np.split([1, 2])
62 assert len(sp)==3 and isEqual(sp[0].arclen(), 1) and isEqual(sp[1].arclen(), 1) and sp[2] is None
64 sp = np.split([1.5, 2])
65 assert len(sp)==3 and isEqual(sp[0].arclen(), 1.5) and isEqual(sp[1].arclen(), 0.5) and sp[2] is None
67 # three split parameters
68 sp = np.split([0, 0.5, 1])
69 assert len(sp)==4 and sp[0] is None and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 0.5) and isEqual(sp[3].arclen(), 1)
71 sp = np.split([0, 0.5, 1.5])
72 assert len(sp)==4 and sp[0] is None and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 1) and isEqual(sp[3].arclen(), 0.5)
74 sp = np.split([0, 0.5, 2])
75 assert len(sp)==4 and sp[0] is None and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 1.5) and sp[3] is None
77 sp = np.split([0, 1, 1.5])
78 assert len(sp)==4 and sp[0] is None and isEqual(sp[1].arclen(), 1) and isEqual(sp[2].arclen(), 0.5) and isEqual(sp[3].arclen(), 0.5)
80 sp = np.split([0, 1, 2])
81 assert len(sp)==4 and sp[0] is None and isEqual(sp[1].arclen(), 1) and isEqual(sp[2].arclen(), 1) and sp[3] is None
84 sp = np.split([0, 1.5, 2])
85 assert len(sp)==4 and sp[0] is None and isEqual(sp[1].arclen(), 1.5) and isEqual(sp[2].arclen(), 0.5) and sp[3] is None
87 sp = np.split([0.5, 1, 1.5])
88 assert len(sp)==4 and isEqual(sp[0].arclen(), 0.5) and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 0.5) and isEqual(sp[3].arclen(), 0.5)
90 sp = np.split([0.5, 1.5, 2])
91 assert len(sp)==4 and isEqual(sp[0].arclen(), 0.5) and isEqual(sp[1].arclen(), 1) and isEqual(sp[2].arclen(), 0.5) and sp[3] is None
93 sp = np.split([1, 1.5, 2])
94 assert len(sp)==4 and isEqual(sp[0].arclen(), 1) and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 0.5) and sp[3] is None
97 # four split parameters
98 sp = np.split([0, 0.5, 1, 1.5])
99 assert len(sp)==5 and sp[0] is None and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 0.5) and isEqual(sp[3].arclen(), 0.5) and isEqual(sp[4].arclen(), 0.5)
101 sp = np.split([0, 0.5, 1, 2])
102 assert len(sp)==5 and sp[0] is None and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 0.5) and isEqual(sp[3].arclen(), 1) and sp[4] is None
104 sp = np.split([0, 0.5, 1.5, 2])
105 assert len(sp)==5 and sp[0] is None and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 1) and isEqual(sp[3].arclen(), 0.5) and sp[4] is None
107 sp = np.split([0, 1, 1.5, 2])
108 assert len(sp)==5 and sp[0] is None and isEqual(sp[1].arclen(), 1) and isEqual(sp[2].arclen(), 0.5) and isEqual(sp[3].arclen(), 0.5) and sp[4] is None
110 sp = np.split([0.5, 1, 1.5, 2])
111 assert len(sp)==5 and isEqual(sp[0].arclen(), 0.5) and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 0.5) and isEqual(sp[3].arclen(), 0.5) and sp[4] is None
114 # five split parameters
115 sp = np.split([0, 0.5, 1, 1.5, 2])
116 assert len(sp)==6 and sp[0] is None and isEqual(sp[1].arclen(), 0.5) and isEqual(sp[2].arclen(), 0.5) and isEqual(sp[3].arclen(), 0.5) and isEqual(sp[4].arclen(), 0.5) and sp[5] is None
119 if __name__ == "__main__":
120 unittest.main()