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

Last change on this file since 5875 was 5875, checked in by ole, 15 years ago

Added more alltrue and allclose to mesh tests

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