source: branches/source_numpy_conversion/anuga/mesh_engine/test_generate_mesh.py @ 6768

Last change on this file since 6768 was 5951, checked in by rwilson, 16 years ago

More NumPy? changes.

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