source: inundation/ga/storm_surge/pmesh/triangmoduleHarness.py @ 541

Last change on this file since 541 was 349, checked in by duncan, 21 years ago

adding pmesh

File size: 7.6 KB
Line 
1#!/usr/bin/env python
2#
3
4import unittest
5import triang
6
7class triangTestCase(unittest.TestCase):
8    def setUp(self):
9        pass
10       
11    def tearDown(self):
12        pass
13   
14    def testrectangle(self):
15
16        points = []
17        seglist = []
18        holelist = []
19        regionlist = []
20
21        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
22        pointattlist = [[],[],[],[]]
23        regionlist.append( (1.2,1.2,5.0) )
24        seglist = [(0,1),(1,3),(3,2),(2,0)]
25        segattlist = [0,0,0,0]
26        trilist = []
27        mode = "Qzp"
28        data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist,trilist, mode)
29       
30        self.failUnless(data['trianglelist'] ==[(1, 0, 2), (2, 3, 1)],
31                        'trianglelist is wrong!')
32        self.failUnless(data['generatedsegmentlist'] ==[(0, 1), (1, 3), (3, 2), (2, 0)],
33                        'generatedsegmentlist is wrong!')
34        self.failUnless(data['pointlist'] ==[(0.0, 0.0), (0.0, 10.0), (3.0, 0.0), (3.0, 10.0)],
35                        ' is wrong!')
36
37       
38    def testrectangle(self):
39
40        points = []
41        seglist = []
42        holelist = []
43        regionlist = []
44
45        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
46        pointattlist = [[],[],[],[]]
47        regionlist.append( (1.2,1.2,5.0) )
48        seglist = [(0,1),(1,3),(3,2),(2,0)]
49        segattlist = [0,0,0,0]
50        trilist = []
51        mode = "Qzp"
52        data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist,trilist, mode)
53       
54        self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
55                        'trianglelist is wrong!')
56        self.failUnless(data['generatedsegmentlist'] ==[(0, 1), (1, 3), (3, 2), (2, 0)],
57                        'segmentlist is wrong!')
58        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0), (3.0, 0.0), (3.0, 10.0)],
59                        ' is wrong!')
60       
61    def testbad_region(self):
62
63        points = []
64        seglist = []
65        holelist = []
66        regionlist = [(1.2,1.2)]
67
68        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
69        pointattlist = [[],[],[],[]]
70        seglist = [(0,1),(1,3),(3,2),(2,0)]
71        segattlist = [0,0,0,0]
72        trilist = []
73        mode = "Qzpn"
74        try:
75            data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist, trilist, mode)
76           
77        except TypeError:
78            pass
79        else:
80            self.failUnless(0 ==1,
81                        'bad region list did not raise error!')
82     
83    def testregion_with_maxarea(self):
84
85        points = []
86        seglist = []
87        holelist = []
88        regionlist = [(3,1,1.0)]
89
90        points = [(0.0,0.0),(6.0,0.0),(6.0,6.0),(0.0,6.0)]
91        pointattlist = [[],[],[],[]]
92        seglist = [(0,1),(1,2),(3,2),(3,0),(0,2)]
93        segattlist = [0,0,0,0,0]
94        trilist = []
95        mode = "Qzpna36a"
96        data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist, trilist, mode)
97        self.failUnless(len(data['generatedtrianglelist']) == 2,
98                        'testregion_with_maxarea 1: # of tris is wrong!')
99        ## Another test case   
100        regionlist = [(3,1,1.0),(1,3,1.0,8.0)]
101        mode = "Qzpna36a"
102        data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist, trilist, mode)
103        self.failUnless(len(data['generatedtrianglelist']) == 6,
104                        'testregion_with_maxarea 2: # of tris is wrong!')
105        ## Another test case   
106        regionlist = [(3,1,1.0,8.0),(1,3,1.0,8.0)]
107        mode = "Qzpna36a"
108        data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist, trilist, mode)
109        self.failUnless(len(data['generatedtrianglelist']) == 8,
110                        'testregion_with_maxarea 3: # of tris is wrong!')
111                 
112        ## Another test case   
113        regionlist = [(3,1,1.0),(1,3,1.0,8.0)]
114        mode = "Qzpna8a"
115        data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist, trilist, mode)
116        self.failUnless(len(data['generatedtrianglelist']) == 8,
117                        'testregion_with_maxarea 4: # of tris is wrong!')
118                 
119                 
120    def testbad_point(self):
121
122        holelist = []
123        regionlist = []
124
125        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0)]
126        pointattlist = [[],[],[],[]]
127        seglist = [(0,1),(1,3),(3,2),(2,0)]
128        segattlist = [0,0,0,0]
129        trilist = []
130        mode = "Qzpn"
131        try:
132            data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist, trilist, mode)
133           
134        except TypeError:
135            pass
136        else:
137            self.failUnless(0 ==1,
138                        'bad point list did not raise error!')
139     
140    def testbad_hole(self):
141
142        holelist = [(9.0)]
143        regionlist = []
144
145        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
146        pointattlist = [[],[],[],[]]
147        seglist = [(0,1),(1,3),(3,2),(2,0)]
148        segattlist = [0,0,0,0]
149        trilist = []
150        mode = "Qzpn"
151        try:
152            data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist, trilist, mode)
153           
154        except TypeError:
155            pass
156        else:
157            self.failUnless(0 ==1,
158                        'bad hole list did not raise error!')
159     
160    def testbad_segment(self):
161
162        holelist = []
163        regionlist = []
164
165        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
166        pointattlist = [[],[],[],[]]
167        seglist = [(0,1),(1,3),(3,2),(2)]
168        segattlist = [0,0,0,0]
169        trilist = []
170        mode = "Qzpn"
171        try:
172            data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist, trilist, mode)
173           
174        except TypeError:
175            pass
176        else:
177            self.failUnless(0 ==1,
178                        'bad segment list did not raise error!')
179     
180    def testbad_segattlist(self):
181
182        holelist = []
183        regionlist = []
184
185        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
186        pointattlist = [[],[],[],[]]
187        seglist = [(0,1),(1,3),(3,2),(2,0)]
188        segattlist = [0,0]
189        trilist = []
190        mode = "Qzpn"
191        try:
192            data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist, trilist, mode)
193           
194            self.failUnless(data['trianglelist'] ==[(1, 0, 2), (2, 3, 1)],
195                        'trianglelist is wrong!')
196        except TypeError:
197            pass
198        else:
199            self.failUnless(0 ==1,
200                        'bad segment attribute list did not raise error!')
201           
202    def testrectangle_regions(self):
203
204        points = []
205        seglist = []
206        holelist = []
207        regionlist = []
208
209        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
210        pointattlist = [[],[],[],[]]
211        #it seems that
212        #triangle only associates one region with a triangle
213        regionlist.append( (1.3,1.3,88.33) )
214        regionlist.append( (1.2,1.2,77,55) )
215        seglist = [(0,1),(1,3),(3,2),(2,0)]
216        segattlist = [0,0,0,0]
217        trilist = []
218        mode = "QAzpq"
219        data = triang.genMesh(points,seglist,holelist,regionlist,pointattlist,segattlist, trilist, mode)
220           
221        self.failUnless(data['generatedtriangleattributelist'] ==[[77.0], [77.0], [77.0], [77.0]],
222                        'triangleattributelist is wrong!')
223       
224       
225if __name__ == "__main__":
226
227    suite = unittest.makeSuite(triangTestCase,'test')
228    runner = unittest.TextTestRunner()
229    runner.run(suite)
Note: See TracBrowser for help on using the repository browser.