/[thuban]/branches/WIP-pyshapelib-bramz/test/test_baserenderer.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/test/test_baserenderer.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1557 by bh, Thu Aug 7 17:29:46 2003 UTC revision 1928 by bh, Mon Nov 10 16:57:43 2003 UTC
# Line 15  import os Line 15  import os
15  import binascii  import binascii
16  import unittest  import unittest
17    
18    from mockgeo import SimpleShapeStore
19  import support  import support
20  support.initthuban()  support.initthuban()
21    
22  from Thuban.Model.color import Transparent, Color  from Thuban.Model.color import Transparent, Color
23  from Thuban.Model.data import SHAPETYPE_ARC, SHAPETYPE_POLYGON, SHAPETYPE_POINT  from Thuban.Model.data import SHAPETYPE_ARC, SHAPETYPE_POLYGON, SHAPETYPE_POINT
24  from Thuban.Model.map import Map  from Thuban.Model.map import Map
25  from Thuban.Model.layer import Layer, RasterLayer  from Thuban.Model.layer import BaseLayer, Layer, RasterLayer
26  from Thuban.Model.table import MemoryTable, \  from Thuban.Model.table import MemoryTable, \
27       FIELDTYPE_DOUBLE, FIELDTYPE_INT, FIELDTYPE_STRING       FIELDTYPE_DOUBLE, FIELDTYPE_INT, FIELDTYPE_STRING
28    from Thuban.Model.classification import ClassGroupSingleton
29  import Thuban.Model.resource  import Thuban.Model.resource
30    
31  from Thuban.UI.baserenderer import BaseRenderer  
32    from Thuban.UI.baserenderer import BaseRenderer, \
33         add_renderer_extension, init_renderer_extensions
34    
35    
36  class MockDC:  class MockDC:
# Line 85  class SimpleRenderer(BaseRenderer): Line 89  class SimpleRenderer(BaseRenderer):
89      def label_font(self):      def label_font(self):
90          return "label font"          return "label font"
91    
92      def draw_raster_data(self, data):      def draw_raster_data(self, data, format='BMP'):
93          self.raster_data = data          self.raster_data = data
94            self.raster_format = format
   
 class SimpleShape:  
   
     def __init__(self, points):  
         self.points = points  
   
     def Points(self):  
         return self.points  
   
 class SimpleShapeStore:  
   
     def __init__(self, shapetype, shapes, table):  
         self.shapetype = shapetype  
         self.shapes = shapes  
         self.table = table  
         assert table.NumRows() == len(shapes)  
   
     def ShapeType(self):  
         return self.shapetype  
   
     def Table(self):  
         return self.table  
   
     def NumShapes(self):  
         return len(self.shapes)  
   
     def Shape(self, index):  
         return SimpleShape(self.shapes[index])  
95    
96    
97  class MockProjection:  class MockProjection:
# Line 163  class TestBaseRenderer(unittest.TestCase Line 139  class TestBaseRenderer(unittest.TestCase
139          map.AddLayer(layer)          map.AddLayer(layer)
140    
141          dc = MockDC()          dc = MockDC()
142          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
143    
144          renderer.render_map(map)          renderer.render_map()
145    
146          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
147                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 193  class TestBaseRenderer(unittest.TestCase Line 169  class TestBaseRenderer(unittest.TestCase
169          self.to_destroy.append(map)          self.to_destroy.append(map)
170    
171          dc = MockDC()          dc = MockDC()
172          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
173    
174          renderer.render_map(map)          renderer.render_map()
175    
176          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
177                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 232  class TestBaseRenderer(unittest.TestCase Line 208  class TestBaseRenderer(unittest.TestCase
208          self.to_destroy.append(map)          self.to_destroy.append(map)
209    
210          dc = MockDC()          dc = MockDC()
211          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
212    
213          renderer.render_map(map)          renderer.render_map()
214    
215          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
216                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 271  class TestBaseRenderer(unittest.TestCase Line 247  class TestBaseRenderer(unittest.TestCase
247          self.to_destroy.append(map)          self.to_destroy.append(map)
248    
249          dc = MockDC()          dc = MockDC()
250          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
251    
252          renderer.render_map(map)          renderer.render_map()
253    
254          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
255                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 305  class TestBaseRenderer(unittest.TestCase Line 281  class TestBaseRenderer(unittest.TestCase
281          self.to_destroy.append(map)          self.to_destroy.append(map)
282    
283          dc = MockDC(size = (20, 20))          dc = MockDC(size = (20, 20))
284          renderer = SimpleRenderer(dc, 34, (800, 2250))          renderer = SimpleRenderer(dc, map, 34, (800, 2250))
285    
286          renderer.render_map(map)          renderer.render_map()
287    
288          # The following commented out code block can be used to generate          # The following commented out code block can be used to generate
289          # the base64 coded reference image data          # the base64 coded reference image data
# Line 350  class TestBaseRenderer(unittest.TestCase Line 326  class TestBaseRenderer(unittest.TestCase
326              'yItGQwJCQo9RxozIgkyCQoPFxAtDBkgIgkJCQkJCQkJMRoQECJQNi9EIAAgCQkJCQ'              'yItGQwJCQo9RxozIgkyCQoPFxAtDBkgIgkJCQkJCQkJMRoQECJQNi9EIAAgCQkJCQ'
327              'kSUA88UAYeBjELICA8HiI=\n')              'kSUA88UAYeBjELICA8HiI=\n')
328          self.assertEquals(renderer.raster_data, raw_data)          self.assertEquals(renderer.raster_data, raw_data)
329            self.assertEquals(renderer.raster_format, "BMP")
330    
331          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
332                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 372  class TestBaseRenderer(unittest.TestCase Line 349  class TestBaseRenderer(unittest.TestCase
349          self.to_destroy.append(map)          self.to_destroy.append(map)
350    
351          dc = MockDC()          dc = MockDC()
352          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
353    
354          renderer.render_map(map)          renderer.render_map()
355    
356          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
357                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 400  class TestBaseRenderer(unittest.TestCase Line 377  class TestBaseRenderer(unittest.TestCase
377          self.to_destroy.append(map)          self.to_destroy.append(map)
378    
379          dc = MockDC()          dc = MockDC()
380          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
381    
382          renderer.render_map(map)          renderer.render_map()
383    
384          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
385                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 429  class TestBaseRenderer(unittest.TestCase Line 406  class TestBaseRenderer(unittest.TestCase
406          self.to_destroy.append(map)          self.to_destroy.append(map)
407    
408          dc = MockDC()          dc = MockDC()
409          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
410    
411          renderer.render_map(map)          renderer.render_map()
412    
413          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
414                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 442  class TestBaseRenderer(unittest.TestCase Line 419  class TestBaseRenderer(unittest.TestCase
419                             ('EndDrawing',)])                             ('EndDrawing',)])
420    
421    
422        def test_point_with_classification(self):
423            """Test BaseRenderer with point layer and classification"""
424            table = MemoryTable([("type", FIELDTYPE_STRING),
425                                 ("value", FIELDTYPE_DOUBLE),
426                                 ("code", FIELDTYPE_INT)],
427                                [("UNKNOWN", 0.0, 0),
428                                 ("UNKNOWN", 0.0, 1)])
429            shapes = [[[(0, 0)]], [[(10, 10)]]]
430            store = SimpleShapeStore(SHAPETYPE_POINT, shapes, table)
431    
432            map = Map("TestBaseRenderer")
433            layer = Layer("point layer", store)
434            group = ClassGroupSingleton(1)
435            group.GetProperties().SetFill(Color(0, 0, 1))
436            layer.GetClassification().AppendGroup(group)
437            layer.SetClassificationColumn("code")
438    
439            map.AddLayer(layer)
440            self.to_destroy.append(map)
441    
442            dc = MockDC()
443            renderer = SimpleRenderer(dc, map, 2, (10, 10))
444    
445            renderer.render_map()
446    
447            self.assertEquals(dc.calls,
448                              [('BeginDrawing',),
449                               ('SetBrush', ('brush', Transparent)),
450                               ('SetPen', ('pen', Color(0, 0, 0), 1)),
451                               ('DrawEllipse', 5, 5, 10, 10),
452                               ('SetBrush', ('brush', Color(0, 0, 1))),
453                               ('SetPen', ('pen', Color(0, 0, 0), 1)),
454                               ('DrawEllipse', 25, -15, 10, 10),
455                               ('SetFont', "label font"),
456                               ('EndDrawing',)])
457    
458    
459        def test_renderer_extension(self):
460            """Test renderer with a renderer extension"""
461            class MyLayer(BaseLayer):
462                pass
463    
464            calls = []
465            def my_renderer(renderer, layer):
466                calls.append((renderer, layer))
467                return ()
468    
469            add_renderer_extension(MyLayer, my_renderer)
470    
471            try:
472                map = Map("test_renderer_extension")
473                layer = MyLayer("my layer")
474                map.AddLayer(layer)
475                self.to_destroy.append(map)
476    
477                dc = MockDC()
478                renderer = SimpleRenderer(dc, map, 2, (10, 10))
479                renderer.render_map()
480            finally:
481                init_renderer_extensions()
482    
483            self.assertEquals(calls, [(renderer, layer)])
484    
485    
486  if __name__ == "__main__":  if __name__ == "__main__":
487      support.run_tests()      support.run_tests()

Legend:
Removed from v.1557  
changed lines
  Added in v.1928

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26