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

Last change on this file since 1106 was 847, checked in by duncan, 20 years ago

triangmoduleharness - reformating/new tests

File size: 10.0 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        segattlist = []
19        holelist = []
20        regionlist = []
21
22        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
23        # This will cause a seg fault
24        #points = [[0.0,0.0],[0.0,10.0],[3.0,0.0],[3.0,10.0]]
25
26        # automatically generate pointattlist
27        pointattlist = []
28        for point in points:
29            pointattlist.append([])
30        #print "pointattlist",pointattlist
31        #pointattlist = [[],[],[],[]]
32        trilist = []
33        mode = "Qzcn"
34        data = triang.genMesh(points,seglist,holelist,regionlist,
35                              pointattlist,segattlist,trilist, mode)
36        self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
37                        'generatedtrianglelist is wrong!')
38        #print "data['generatedsegmentlist']",data['generatedsegmentlist']
39        self.failUnless(data['generatedsegmentlist'] ==[(2, 0), (3, 2), (1, 3),
40                                                        (0, 1)]
41              ,          'generatedsegmentlist is wrong!')
42        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0),
43                                                      (3.0, 0.0), (3.0, 10.0)],
44                        ' is wrong!')
45       
46        #print "data['generatedtriangleneighborlist']",
47        #data['generatedtriangleneighborlist']
48        self.failUnless(data['generatedtriangleneighborlist'] ==[(-1, 1, -1),
49                                                                 (-1, 0, -1)],
50                        'generatedtriangleneighborlist is wrong!')
51
52       
53    def testrectangleII(self):
54
55        points = []
56        seglist = []
57        holelist = []
58        regionlist = []
59
60        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
61        pointattlist = [[],[],[],[]]
62        regionlist.append( (1.2,1.2,5.0) )
63        seglist = [(0,1),(1,3),(3,2),(2,0)]
64        segattlist = [0,0,0,0]
65        trilist = []
66        mode = "Qzp"
67        data = triang.genMesh(points,seglist,holelist,regionlist,
68                              pointattlist,segattlist,trilist, mode)
69       
70        self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
71                        'trianglelist is wrong!')
72        self.failUnless(data['generatedsegmentlist'] ==[(0, 1), (1, 3),
73                                                        (3, 2), (2, 0)],
74                        'segmentlist is wrong!')
75        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0),
76                                                      (3.0, 0.0), (3.0, 10.0)],
77                        ' is wrong!')
78   
79    def testsegmarker(self):
80
81        points = []
82        seglist = []
83        holelist = []
84        regionlist = []
85
86        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
87        pointattlist = [[],[],[],[]]
88        regionlist.append( (1.2,1.2,5.0) )
89        seglist = [(0,1),(1,3),(3,2),(2,0)]
90        segattlist = [1.0,2.0,3.0,4.0]
91        trilist = []
92        mode = "Qzp"
93        data = triang.genMesh(points,seglist,holelist,regionlist,
94                              pointattlist,segattlist,trilist, mode)
95       
96        self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
97                        'trianglelist is wrong!')
98        self.failUnless(data['generatedsegmentlist'] ==[(0, 1), (1, 3),
99                                                        (3, 2), (2, 0)],
100                        'segmentlist is wrong!')
101        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0),
102                                                      (3.0, 0.0), (3.0, 10.0)],
103                        ' is wrong!')
104        self.failUnless(data['generatedsegmentmarkerlist'] ==[1,2,3,4],
105                        ' is wrong!')
106             
107    def testbad_region(self):
108
109        points = []
110        seglist = []
111        holelist = []
112        regionlist = [(1.2,1.2)]
113
114        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
115        pointattlist = [[],[],[],[]]
116        seglist = [(0,1),(1,3),(3,2),(2,0)]
117        segattlist = [0,0,0,0]
118        trilist = []
119        mode = "Qzpn"
120        try:
121            data = triang.genMesh(points,seglist,holelist,
122                                  regionlist,pointattlist,segattlist,
123                                  trilist, mode)
124           
125        except TypeError:
126            pass
127        else:
128            self.failUnless(0 ==1,
129                        'bad region list did not raise error!')
130     
131    def testregion_with_maxarea(self):
132
133        points = []
134        seglist = []
135        holelist = []
136        regionlist = [(3,1,1.0)]
137
138        points = [(0.0,0.0),(6.0,0.0),(6.0,6.0),(0.0,6.0)]
139        pointattlist = [[],[],[],[]]
140        seglist = [(0,1),(1,2),(3,2),(3,0),(0,2)]
141        segattlist = [0,0,0,0,0]
142        trilist = []
143        mode = "Qzpna36a"
144        data = triang.genMesh(points,seglist,holelist,regionlist,
145                              pointattlist,segattlist, trilist, mode)
146        self.failUnless(len(data['generatedtrianglelist']) == 2,
147                        'testregion_with_maxarea 1: # of tris is wrong!')
148        ## Another test case   
149        regionlist = [(3,1,1.0),(1,3,1.0,8.0)]
150        mode = "Qzpna36a"
151        data = triang.genMesh(points,seglist,holelist,regionlist,
152                              pointattlist,segattlist, trilist, mode)
153        self.failUnless(len(data['generatedtrianglelist']) == 6,
154                        'testregion_with_maxarea 2: # of tris is wrong!')
155        ## Another test case   
156        regionlist = [(3,1,1.0,8.0),(1,3,1.0,8.0)]
157        mode = "Qzpna36a"
158        data = triang.genMesh(points,seglist,holelist,regionlist,
159                              pointattlist,segattlist, trilist, mode)
160        self.failUnless(len(data['generatedtrianglelist']) == 8,
161                        'testregion_with_maxarea 3: # of tris is wrong!')
162                 
163        ## Another test case   
164        regionlist = [(3,1,1.0),(1,3,1.0,8.0)]
165        mode = "Qzpna8a"
166        data = triang.genMesh(points,seglist,holelist,regionlist,
167                              pointattlist,segattlist, trilist, mode)
168        self.failUnless(len(data['generatedtrianglelist']) == 8,
169                        'testregion_with_maxarea 4: # of tris is wrong!')
170                 
171                 
172    def testbad_point(self):
173
174        holelist = []
175        regionlist = []
176
177        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0)]
178        pointattlist = [[],[],[],[]]
179        seglist = [(0,1),(1,3),(3,2),(2,0)]
180        segattlist = [0,0,0,0]
181        trilist = []
182        mode = "Qzpn"
183        try:
184            data = triang.genMesh(points,seglist,holelist,regionlist,
185                                  pointattlist,segattlist, trilist, mode)
186           
187        except TypeError:
188            pass
189        else:
190            self.failUnless(0 ==1,
191                        'bad point list did not raise error!')
192     
193    def testbad_hole(self):
194
195        holelist = [(9.0)]
196        regionlist = []
197
198        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
199        pointattlist = [[],[],[],[]]
200        seglist = [(0,1),(1,3),(3,2),(2,0)]
201        segattlist = [0,0,0,0]
202        trilist = []
203        mode = "Qzpn"
204        try:
205            data = triang.genMesh(points,seglist,holelist,regionlist,
206                                  pointattlist,segattlist, trilist, mode)
207           
208        except TypeError:
209            pass
210        else:
211            self.failUnless(0 ==1,
212                        'bad hole list did not raise error!')
213     
214    def testbad_segment(self):
215
216        holelist = []
217        regionlist = []
218
219        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
220        pointattlist = [[],[],[],[]]
221        seglist = [(0,1),(1,3),(3,2),(2)]
222        segattlist = [0,0,0,0]
223        trilist = []
224        mode = "Qzpn"
225        try:
226            data = triang.genMesh(points,seglist,holelist,regionlist,
227                                  pointattlist,segattlist, trilist, mode)
228           
229        except TypeError:
230            pass
231        else:
232            self.failUnless(0 ==1,
233                        'bad segment list did not raise error!')
234     
235    def testbad_segattlist(self):
236
237        holelist = []
238        regionlist = []
239
240        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
241        pointattlist = [[],[],[],[]]
242        seglist = [(0,1),(1,3),(3,2),(2,0)]
243        segattlist = [0,0]
244        trilist = []
245        mode = "Qzpn"
246        try:
247            data = triang.genMesh(points,seglist,holelist,regionlist,
248                                  pointattlist,segattlist, trilist, mode)
249           
250            self.failUnless(data['trianglelist'] ==[(1, 0, 2), (2, 3, 1)],
251                        'trianglelist is wrong!')
252        except TypeError:
253            pass
254        else:
255            self.failUnless(0 ==1,
256                        'bad segment attribute list did not raise error!')
257           
258    def testrectangle_regions(self):
259
260        points = []
261        seglist = []
262        holelist = []
263        regionlist = []
264
265        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
266        pointattlist = [[],[],[],[]]
267        #it seems that
268        #triangle only associates one region with a triangle
269        regionlist.append( (1.3,1.3,88.33) )
270        regionlist.append( (1.2,1.2,77,55) )
271        seglist = [(0,1),(1,3),(3,2),(2,0)]
272        segattlist = [0,0,0,0]
273        trilist = []
274        mode = "QAzpq"
275        data = triang.genMesh(points,seglist,holelist,regionlist,
276                              pointattlist,segattlist, trilist, mode)
277           
278        self.failUnless(data['generatedtriangleattributelist'] ==[[77.0], [77.0], [77.0], [77.0]],
279                        'triangleattributelist is wrong!')
280       
281       
282if __name__ == "__main__":
283
284    suite = unittest.makeSuite(triangTestCase,'test')
285    runner = unittest.TextTestRunner()
286    runner.run(suite)
Note: See TracBrowser for help on using the repository browser.