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

Last change on this file since 647 was 604, checked in by duncan, 20 years ago

add another test

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