source: anuga_core/source/anuga/mesh_engine/test_generate_mesh.py @ 5571

Last change on this file since 5571 was 4916, checked in by duncan, 16 years ago

Working on generate_mesh memory issues. Thanks Ole for helping me with this, and Nick for letting me use his computer.

File size: 27.4 KB
Line 
1#!/usr/bin/env python
2#
3"""
4I removed lone test vert's, since I'm working on removing lone verts at a lower
5level of the code, using the -j flag in triangle.
6"""
7import sys
8
9import unittest
10from anuga.mesh_engine.mesh_engine import generate_mesh
11
12from Numeric import array, Float, Int
13
14from anuga.utilities.numerical_tools import ensure_numeric
15
16from anuga.utilities.anuga_exceptions import ANUGAError
17
18class triangTestCase(unittest.TestCase):
19    def setUp(self):
20        pass
21
22    def tearDown(self):
23        pass
24
25    def metestrectangleII(self):
26
27        points = []
28        seglist = []
29        holelist = []
30        regionlist = []
31
32        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
33        pointattlist = [[],[],[],[]]
34        regionlist.append( (1.2,1.2,5.0) )
35        seglist = [(0,1),(1,3),(3,2),(2,0)]
36        segattlist = [0,0,0,0]
37       
38        mode = "Qzp"
39       
40        points =  ensure_numeric(points, Float)
41        seglist = test = ensure_numeric(seglist, Int)
42        data = triang.genMesh(points,seglist,holelist,regionlist,
43                              pointattlist,segattlist, mode, test)
44        print "data", data
45        self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
46                        'trianglelist is wrong!')
47        self.failUnless(data['generatedsegmentlist'] ==[(0, 1), (1, 3),
48                                                        (3, 2), (2, 0)],
49                        'segmentlist is wrong!')
50        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0),
51                                                      (3.0, 0.0), (3.0, 10.0)],
52                        ' is wrong!')
53
54
55    def testrectangleIIb(self):
56        # segattlist = []
57        points = []
58        seglist = []
59        holelist = []
60        regionlist = []
61
62        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
63        pointattlist = []
64        regionlist.append( (1.2,1.2,5.0) )
65        seglist = [(0,1),(1,3),(3,2),(2,0)]
66        segattlist = []
67       
68        mode = "Qzp"
69       
70        data = generate_mesh(points,seglist,holelist,regionlist,
71                              pointattlist,segattlist, mode, points)
72
73        self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
74                        'trianglelist is wrong!')
75        self.failUnless(data['generatedsegmentlist'] ==[(0, 1), (1, 3),
76                                                        (3, 2), (2, 0)],
77                        'segmentlist is wrong!')
78        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0),
79                                                      (3.0, 0.0), (3.0, 10.0)],
80                        ' is wrong!')
81     
82    def testrectangleIIc(self):
83        # segattlist = None
84        points = []
85        seglist = []
86        holelist = []
87        regionlist = []
88
89        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
90        pointattlist = None
91        regionlist.append( (1.2,1.2,5.0) )
92        seglist = [(0,1),(1,3),(3,2),(2,0)]
93        segattlist = None
94       
95        mode = "Qzp"
96       
97        data = generate_mesh(points,seglist,holelist,regionlist,
98                              pointattlist,segattlist, mode, points)
99
100        self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
101                        'trianglelist is wrong!')
102        self.failUnless(data['generatedsegmentlist'] ==[(0, 1), (1, 3),
103                                                        (3, 2), (2, 0)],
104                        'segmentlist is wrong!')
105        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0),
106                                                      (3.0, 0.0), (3.0, 10.0)],
107                        ' is wrong!')
108       
109    def test_bad_point_atts(self):
110
111        points = []
112        seglist = []
113        holelist = []
114        regionlist = []
115
116        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
117        pointattlist = [[],[],[]]
118        regionlist.append( (1.2,1.2,5.0) )
119        seglist = [(0,1),(1,3),(3,2),(2,0)]
120        segattlist = [0,0,0,0]
121       
122        mode = "Qzp"
123       
124        try:
125            data = generate_mesh(points,seglist,holelist,
126                                  regionlist,pointattlist,segattlist,
127                                   mode, points)
128        except ANUGAError:
129            pass
130        else:
131            self.failUnless(0 ==1,
132                        'bad list did not raise error!')
133           
134       
135    def test_bad_point_attsII(self):
136        points = []
137        seglist = []
138        holelist = []
139        regionlist = []
140
141        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
142        pointattlist = [[1],[2],[3],[4,8]]
143        regionlist.append( (1.2,1.2,5.0) )
144        seglist = [(0,1),(1,3),(3,2),(2,0)]
145        segattlist = [0,0,0,0]
146       
147        mode = "Qzp"
148       
149        try:
150            data = generate_mesh(points,seglist,holelist,
151                                  regionlist,pointattlist,segattlist,
152                                   mode, points)
153        except ANUGAError:
154            pass
155        else:
156            self.failUnless(0 ==1,
157                        'bad list did not raise error!')
158           
159    def testsegmarker(self):
160
161        holelist = []
162        regionlist = []
163
164        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
165        pointattlist = [[],[],[],[]]
166        regionlist.append( (1.2,1.2,5.0) )
167        seglist = [(0,1),(1,3),(3,2),(2,0)]
168        segattlist = [1.0,2.0,3.0,4.0]
169       
170        mode = "Qzp"
171        data = generate_mesh(points,seglist,holelist,regionlist,
172                              pointattlist,segattlist, mode, points)
173
174        self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
175                        'trianglelist is wrong!')
176        self.failUnless(data['generatedsegmentlist'] ==[(0, 1), (1, 3),
177                                                        (3, 2), (2, 0)],
178                        'segmentlist is wrong!')
179        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0),
180                                                      (3.0, 0.0), (3.0, 10.0)],
181                        'generatedpointlist is wrong!')
182        self.failUnless(data['generatedsegmentmarkerlist'] ==[1,2,3,4],
183                        'generatedsegmentmarkerlist is wrong!')
184
185    def testbad_region(self):
186
187        points = []
188        seglist = []
189        holelist = []
190        regionlist = [(1.2,1.2)]
191
192        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
193        pointattlist = [[],[],[],[]]
194        seglist = [(0,1),(1,3),(3,2),(2,0)]
195        segattlist = [0,0,0,0]
196       
197        mode = "Qzpn"
198        try:
199            data = generate_mesh(points,seglist,holelist,
200                                  regionlist,pointattlist,segattlist,
201                                   mode, points)
202        except ANUGAError:
203            pass
204        else:
205            self.failUnless(0 ==1,
206                        'bad region list did not raise error!')
207
208    def testbad_regionII(self):
209
210        points = []
211        seglist = []
212        holelist = []
213        regionlist = [(1.2,1.2), (1.2,1.25,1.0)]
214
215        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
216        pointattlist = [[],[],[],[]]
217        seglist = [(0,1),(1,3),(3,2),(2,0)]
218        segattlist = [0,0,0,0]
219       
220        mode = "Qzpn"
221        try:
222            data = generate_mesh(points,seglist,holelist,
223                                  regionlist,pointattlist,segattlist,
224                                   mode, points)
225        except ANUGAError:
226            pass
227        else:
228            self.failUnless(0==1,
229                        'bad region list did not raise error!')
230
231    def testregion_with_maxarea(self):
232
233        points = []
234        seglist = []
235        holelist = []
236        regionlist = [(3,1,1.0)]
237
238        points = [(0.0,0.0),(6.0,0.0),(6.0,6.0),(0.0,6.0)]
239        pointattlist = [[],[],[],[]]
240        seglist = [(0,1),(1,2),(3,2),(3,0),(0,2)]
241        segattlist = [0,0,0,0,0]
242       
243        mode = "Qzpna36a"
244        data = generate_mesh(points,seglist,holelist,regionlist,
245                              pointattlist,segattlist,  mode, points)
246
247        self.failUnless(len(data['generatedtrianglelist']) == 2,
248                        'testregion_with_maxarea 1: # of tris is wrong!')
249        ## Another test case
250        regionlist = [(3,1,1.0),(1,3,1.0,8.0)]
251        mode = "Qzp21na36a"
252        data = generate_mesh(points,seglist,holelist,regionlist,
253                              pointattlist,segattlist,  mode, points)
254        #print "len(data['generatedtrianglelist']",len(data['generatedtrianglelist'])
255        # for Duncan On unix this returns a 7 triangle result.
256        # for Duncan on Windows returns a 6 triangle result.
257        # for Ole on nautilus this returns 6
258        # for Duncan on nautilus this returns 7
259        # It seems to be the results from triangle that is
260        # causing the different results, and we are treating
261        # triangle as a back box.
262
263        self.failUnless(len(data['generatedtrianglelist']) >= 6,
264                        'testregion_with_maxarea 2: # of tris is wrong!')
265        ## Another test case
266        regionlist = [(3,1,1.0,8.0),(1,3,1.0,8.0)]
267        mode = "Qzpna36a"
268        data = generate_mesh(points,seglist,holelist,regionlist,
269                              pointattlist,segattlist,  mode, points)
270        #print "len(data['generatedtrianglelist']",len(data['generatedtrianglelist'])
271        # On unix this returns a 10 triangle result.
272        # Windows returns a 8 triangle result.
273        self.failUnless(len(data['generatedtrianglelist']) >= 8,
274                        'testregion_with_maxarea 3: # of tris is wrong!')
275
276        ## Another test case
277        regionlist = [(3,1,1.0),(1,3,1.0,8.0)]
278        mode = "Qzpna8a"
279        data = generate_mesh(points,seglist,holelist,regionlist,
280                              pointattlist,segattlist,  mode, points)
281        #print "len(data['generatedtrianglelist']",len(data['generatedtrianglelist'])
282        # On unix this returns a 10 triangle result.
283        # Windows returns a 8 triangle result.
284
285        self.failUnless(len(data['generatedtrianglelist']) >= 8,
286                        'testregion_with_maxarea 4: # of tris is wrong!')
287
288
289    def FIXME_testbad_hole(self):
290
291        holelist = [(9.0)]
292        regionlist = []
293
294        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
295        pointattlist = [[],[],[],[]]
296        seglist = [(0,1),(1,3),(3,2),(2,0)]
297        segattlist = [0,0,0,0]
298       
299        mode = "Qzpn"
300        try:
301            data = generate_mesh(points,seglist,holelist,regionlist,
302                                  pointattlist,segattlist,  mode, points)
303
304        except TypeError:
305            pass
306        else:
307            self.failUnless(0 ==1,
308                        'bad hole list did not raise error!')
309
310
311    def testbad_segattlist(self):
312
313        holelist = []
314        regionlist = []
315
316        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
317        pointattlist = [[],[],[],[]]
318        seglist = [(0,1),(1,3),(3,2),(2,0)]
319        segattlist = [0,0]
320       
321        mode = "Qzpn"
322        try:
323            data = generate_mesh(points,seglist,holelist,regionlist,
324                                  pointattlist,segattlist, mode, points)
325            print "data",data
326            self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
327                        'trianglelist is wrong!')
328        except ANUGAError:
329            pass
330        else:
331            self.failUnless(0 ==1,
332                        'bad segment attribute list did not raise error!')
333
334    def testrectangle_regions(self):
335
336        points = []
337        seglist = []
338        holelist = []
339        regionlist = []
340
341        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
342        pointattlist = [[],[],[],[]]
343        #it seems that
344        #triangle only associates one region with a triangle
345        regionlist.append( (1.3,1.3,88.33) )
346        regionlist.append( (1.2,1.2,77,55) )
347        seglist = [(0,1),(1,3),(3,2),(2,0)]
348        segattlist = [0,0,0,0]
349        mode = "QAzpq"
350        data = generate_mesh(points,seglist,holelist,regionlist,
351                              pointattlist,segattlist, mode, points)
352
353        self.failUnless(data['generatedtriangleattributelist'] ==[[77.0], [77.0], [77.0], [77.0]],
354                        'triangleattributelist is wrong!')
355
356    def testrectangle_regionsII(self):
357        points = []
358        seglist = []
359        holelist = []
360        regionlist = []
361
362        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
363        pointattlist = [[],[],[],[]]
364        #it seems that
365        #triangle only associates one region with a triangle
366        regionlist.append( [1.3,1.3,88.33] )
367        regionlist.append( [1.2,1.2,77,55] )
368        seglist = [(0,1),(1,3),(3,2),(2,0)]
369        segattlist = [0,0,0,0]
370       
371        mode = "QAzpq"
372        data = generate_mesh(points,seglist,holelist,regionlist,
373                              pointattlist,segattlist, mode, points)
374
375        self.failUnless(data['generatedtriangleattributelist'] ==[[77.0], [77.0], [77.0], [77.0]],
376                        'triangleattributelist is wrong!')
377
378
379    def BADtest_lone_verts(self):
380        print "test_lone_verts"
381        points = []
382        seglist = []
383        holelist = []
384        regionlist = []
385
386        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0),(0.0,10.0)]
387        pointattlist = [[],[],[],[],[]]
388        regionlist.append( (1.2,1.2,5.0) )
389        seglist = [(0,4),(4,1),(1,3),(3,2),(2,0)]
390        segattlist = [0,0,0,0,0]
391       
392        mode = "QpznAa2000.1a"
393        data = generate_mesh(points,seglist,holelist,regionlist,
394                              pointattlist,segattlist, mode, points)
395        #print "data['generatedtrianglelist']", data['generatedtrianglelist']
396        self.failUnless(data['generatedtrianglelist'] ==[(4, 0, 2), (2, 3, 4)],
397                        'trianglelist is wrong!')
398        self.failUnless(data['generatedsegmentlist'] ==[(0, 4), (4, 3),
399                                                        (3, 2), (2, 0)],
400                        'segmentlist is wrong!')
401        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0),
402                                                      (3.0, 0.0), (3.0, 10.0),
403                                                      (0.0,10.0)],
404                        ' is wrong!')
405        #print "data['lonepointlist']", data['lonepointlist']
406        self.failUnless(data['lonepointlist'] ==[1],
407                        'lonepointlist is wrong!')
408
409    def dont_test_lone_vertsII(self):
410
411        points = []
412        seglist = []
413        holelist = []
414        regionlist = []
415
416        points = [(0.0,0.0),(0.0,0.0),(0.0,10.0),(0.0,10.0),(10.0,10.0),
417                  (10.0,10.0),(0.0,10.0),(10.0,0.0)]
418
419        pointattlist = []
420        for point in points:
421            pointattlist.append([])
422        seglist = [(0,1),(1,2),(2,3),(3,4),(4,5),(5,7),(7,0)]
423        segattlist = []
424        for seg in seglist:
425            segattlist.append(0)
426       
427        mode = "QpznAa2000.1a"
428        data = generate_mesh(points,seglist,holelist,regionlist,
429                              pointattlist,segattlist, mode, points)
430        #print "data['generatedtrianglelist']", data['generatedtrianglelist']
431        self.failUnless(data['generatedtrianglelist'] ==[(6, 1, 7), (7, 5, 6)],
432                        'trianglelist is wrong!')
433        self.failUnless(data['generatedsegmentlist'] ==[(1, 6), (6, 5),
434                                                        (5, 7), (7, 1)],
435                        'segmentlist is wrong!')
436        self.failUnless(data['generatedpointlist'] ==[(0.0,0.0),(0.0,0.0),
437                                                      (0.0,10.0),(0.0,10.0),
438                                                      (10.0,10.0),
439                                                      (10.0,10.0),(0.0,10.0),
440                                                      (10.0,0.0)],
441                        ' is wrong!')
442        self.failUnless(data['lonepointlist'] ==[0,2,3,4],
443                        'lonepointlist is wrong!')
444
445    def dont_test_lone_vertsIII(self):
446
447        points = []
448        seglist = []
449        holelist = []
450        regionlist = []
451
452        points = [(-3.,-5.),(0.0,0.0),(0.0,0.0),
453                  (-5.,-8.),(0.0,10.0),(0.0,10.0),
454                  (-3.,-5.),(10.0,10.0), (10.0,10.0),
455                  (0.0,10.0),
456                  (10.0,0.0),
457                  (-12.,45.)]
458
459        pointattlist = []
460        for point in points:
461            pointattlist.append([])
462        seglist = [(1,2),(2,4),(4,5),(5,7),(7,8),(8,10),(10,1)]
463        segattlist = []
464        for seg in seglist:
465            segattlist.append(0)
466            """
467            0 1
468            1 2
469            2 4
470            3 5
471            4 7
472            5 8
473            6 9
474            7 10
475            """
476       
477        mode = "QpznAa2000.1a"
478        data = generate_mesh(points,seglist,holelist,regionlist,
479                              pointattlist,segattlist, mode, points)
480        #print "data['generatedtrianglelist']", data['generatedtrianglelist']
481        #self.failUnless(data['generatedtrianglelist'] ==[(9, 2, 10),
482         #                                                (10, 8, 9)],
483          #              'trianglelist is wrong!')
484        self.failUnless(data['generatedtrianglelist'] ==[(2, 10, 8),
485                                                         (8, 9, 2)],
486                        'trianglelist is wrong!')
487        #print "data['generatedsegmentlist']",data['generatedsegmentlist']
488        self.failUnless(data['generatedsegmentlist'] ==[(9, 2), (9, 8),
489                                                        (8, 10), (2, 10)],
490                        'segmentlist is wrong!')
491        self.failUnless(data['generatedpointlist'] ==points,
492                        ' is wrong!')
493        self.failUnless(data['lonepointlist'] ==[0,1,3,4,5,6,7,11],
494                        'lonepointlist is wrong!')
495       
496    def dont_test_lone_verts4(self):
497        points = []
498        seglist = []
499        holelist = []
500        regionlist = []
501
502        points = [(-56.,-78),(0.0,0.0),(0.0,10.0),(10.,0.)]
503        pointattlist = []
504        seglist = [(1,2),(2,3),(3,1)]
505        segattlist = []
506       
507        mode = "QpznAa2000.1a"
508        data = generate_mesh(points,seglist,holelist,regionlist,
509                              pointattlist,segattlist, mode, points)
510        #print "data['generatedtrianglelist']", data['generatedtrianglelist']
511        #self.failUnless(data['generatedtrianglelist'] ==[(4, 0, 2),(2, 3, 4)],
512        #               'trianglelist is wrong!')
513        print "seglist", seglist
514        print "data['generatedsegmentlist']", data['generatedsegmentlist']
515        print "points", points
516        print "data['generatedpointlist'] ",data['generatedpointlist'] 
517        print "points", points
518        self.failUnless(data['generatedsegmentlist'] ==seglist,
519                        'segmentlist is wrong!')
520        self.failUnless(data['generatedpointlist'] ==points,
521                        ' is wrong!')
522        #print "data['lonepointlist']", data['lonepointlist']
523        self.failUnless(data['lonepointlist'] ==[0],
524                        'lonepointlist is wrong!')
525
526
527
528    def dont_test_transition_to_arrays(self):
529        points = []
530        seglist = []
531        holelist = []
532        regionlist = []
533        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
534        pointattlist = []
535        # 5.0 is the region tag, 99.0 is the max area
536        regionlist.append( [0.2,0.2,5.0,99.0] )
537        seglist = [(0,1),(1,3),(3,2),(2,0)]
538        segattlist = [21,22,23,24]
539         #The 'A' has to be there to get the region marker stuff working
540        mode = "QzpnA"
541        #mode = "jQpznAa2000.1a"
542        data = generate_mesh(points,seglist,holelist,regionlist,
543                              pointattlist,segattlist, mode, points)
544        #print "data", data
545
546        self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
547                        'trianglelist is wrong!')
548        self.failUnless(data['generatedtrianglelist'] ==data['trianglelist'],
549                        'trianglelist is wrong!')
550        self.failUnless(data['generatedsegmentlist'] ==[(0, 1), (1, 3),
551                                                        (3, 2), (2, 0)],
552                        'segmentlist is wrong!')
553        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0),
554                                                      (3.0, 0.0), (3.0, 10.0)],
555                        ' is wrong!')
556        self.failUnless(data['generatedpointlist'] ==data['pointlist'],
557                        ' is wrong!')
558        self.failUnless(data['generatedtriangleattributelist'] == [[5.0],
559                                                                   [5.0]],
560                        ' is wrong!')
561       
562        self.failUnless(data['generatedtriangleattributelist'] == \
563                        data['triangleattributelist'],
564                        ' is wrong!')
565        self.failUnless(data['generatedsegmentlist'] == seglist,
566                        ' is wrong!')
567        self.failUnless(data['generatedsegmentlist'] == data['segmentlist'],
568                        ' is wrong!')
569        self.failUnless(data['generatedsegmentmarkerlist'] == segattlist,
570                        ' is wrong!')
571        self.failUnless(data['generatedsegmentmarkerlist'] == \
572                        data['segmentmarkerlist'],
573                        ' is wrong!')
574        # I copied these answers from the output, so bad test..
575        self.failUnless(data['generatedtriangleneighborlist'] == \
576                        [(-1, 1, -1), (-1, 0, -1)],
577                        ' is wrong!')
578        self.failUnless(data['generatedtriangleneighborlist'] == \
579                        data['triangleneighborlist'],
580                        ' is wrong!')
581       
582    def test_numeric_arrays(self):
583        points = []
584        seglist = []
585        holelist = []
586        regionlist = []
587        points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0)]
588        pointattlist = []
589        # 5.0 is the region tag, 99.0 is the max area
590        tri_tag = 123456.0
591        regionlist.append( [0.2,0.2, tri_tag,99.0] )
592        seglist = [(0,1),(1,3),(3,2),(2,0)]
593        segattlist = [21,22,23,24]
594         #The 'A' has to be there to get the region marker stuff working
595        mode = "QzpnA"
596        #mode = "jQpznAa2000.1a"
597        data = generate_mesh(points,seglist,holelist,regionlist,
598                              pointattlist,segattlist, mode, points)
599        #print "data", data
600
601        self.failUnless(data['generatedtrianglelist'] ==[(1, 0, 2), (2, 3, 1)],
602                        'trianglelist is wrong!')
603        self.failUnless(data['generatedsegmentlist'] ==[(0, 1), (1, 3),
604                                                        (3, 2), (2, 0)],
605                        'segmentlist is wrong!')
606        self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0),
607                                                      (3.0, 0.0), (3.0, 10.0)],
608                        ' is wrong!')
609        self.failUnless(data['generatedtriangleattributelist'] == [[tri_tag],
610                                                                   [tri_tag]],
611                        ' is wrong!')
612       
613        self.failUnless(data['generatedsegmentlist'] == seglist,
614                        ' is wrong!')
615        self.failUnless(data['generatedsegmentmarkerlist'] == segattlist,
616                        ' is wrong!')
617        # I copied these answers from the output, so bad test..
618        self.failUnless(data['generatedtriangleneighborlist'] == \
619                        [(-1, 1, -1), (-1, 0, -1)],
620                        ' is wrong!')
621       
622    def test_pointattlist(self):
623        # segattlist = []
624        points = []
625        seglist = []
626        holelist = []
627        regionlist = []
628
629        points = [(0.0,0.0),(0.0,4.0),(4.0,2.0),(2.0,0.0)]
630        pointattlist = [0.,0.,10.,10.]
631        regionlist.append( [0.2,0.2,2.1, 99.] )
632        seglist = [(0,1),(1,2),(2,3),(3,0)]
633        segattlist = [11,12,13,14]
634        mode = "Qzp"
635        data = generate_mesh(points,seglist,holelist,regionlist,
636                              pointattlist,segattlist, mode, points)
637        self.failUnless(data['generatedpointattributelist'] == [[0.0],[0.0],
638                                                                [10],[10]],
639                        ' is wrong!')
640       
641       
642        pointattlist = [[0.],[0.],[10.],[10.]]
643        mode = "Qzp"       
644        data = generate_mesh(points,seglist,holelist,regionlist,
645                              pointattlist,segattlist, mode, points)
646        self.failUnless(data['generatedpointattributelist'] == [[0.0],[0.0],
647                                                                [10],[10]],
648                        ' is wrong!')
649        pointattlist = [[0.,1],[0.,1],[10.,20],[10.,20]]
650        mode = "Qzp"       
651        data = generate_mesh(points,seglist,holelist,regionlist,
652                              pointattlist,segattlist, mode, points)
653        #print "data", data
654        self.failUnless(data['generatedpointattributelist'] == pointattlist,
655                        ' is wrong!')
656           
657    def dont_test_transition_pointattlist(self):
658        # segattlist = []
659        points = []
660        seglist = []
661        holelist = []
662        regionlist = []
663
664        points = [(0.0,0.0),(0.0,4.0),(4.0,2.0),(2.0,0.0)]
665        pointattlist = [0.,0.,10.,10.]
666        regionlist.append( [0.2,0.2,2.1, 99.] )
667        seglist = [(0,1),(1,2),(2,3),(3,0)]
668        segattlist = [11,12,13,14]
669        mode = "Qzp"
670        data = generate_mesh(points,seglist,holelist,regionlist,
671                              pointattlist,segattlist, mode, points)
672        self.failUnless(data['generatedpointattributelist'] == [[0.0],[0.0],
673                                                                [10],[10]],
674                        ' is wrong!')
675        self.failUnless(data['generatedpointattributelist'] == \
676                        data['pointattributelist'],
677                        ' is wrong!')
678       
679       
680        pointattlist = [[0.],[0.],[10.],[10.]]
681        mode = "Qzp"       
682        data = generate_mesh(points,seglist,holelist,regionlist,
683                              pointattlist,segattlist, mode, points)
684        self.failUnless(data['generatedpointattributelist'] == [[0.0],[0.0],
685                                                                [10],[10]],
686                        ' is wrong!')
687        self.failUnless(data['generatedpointattributelist'] == \
688                        data['pointattributelist'],
689                        ' is wrong!')
690        pointattlist = [[0.,1],[0.,1],[10.,20],[10.,20]]
691        mode = "Qzp"       
692        data = generate_mesh(points,seglist,holelist,regionlist,
693                              pointattlist,segattlist, mode, points)
694        #print "data", data
695        self.failUnless(data['generatedpointattributelist'] == pointattlist,
696                        ' is wrong!')
697        self.failUnless(data['generatedpointattributelist'] == \
698                        data['pointattributelist'],
699                        ' is wrong!')
700     
701if __name__ == "__main__":
702
703    suite = unittest.makeSuite(triangTestCase,'test')
704    #suite = unittest.makeSuite(triangTestCase,'testrectangleIIb')
705    #suite = unittest.makeSuite(triangTestCase,'testsegmarker')
706    #suite = unittest.makeSuite(triangTestCase,'testrectangle_regionsII')
707    runner = unittest.TextTestRunner()  #verbosity=2)
708    runner.run(suite)
Note: See TracBrowser for help on using the repository browser.