/[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 1585 by bh, Fri Aug 15 10:26:40 2003 UTC revision 2552 by jonathan, Fri Jan 28 15:54:00 2005 UTC
# Line 22  support.initthuban() Line 22  support.initthuban()
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  from Thuban.Model.classification import ClassGroupSingleton
29  import Thuban.Model.resource  import Thuban.Model.resource
30    
31    
32  from Thuban.UI.baserenderer import BaseRenderer  from Thuban.UI.baserenderer import BaseRenderer, \
33         add_renderer_extension, init_renderer_extensions
34    
35    
36  class MockDC:  class MockDC:
# Line 88  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, x, y, data, format='BMP'):
93          self.raster_data = data          self.raster_data = data
94            self.raster_format = format
95    
96    
97  class MockProjection:  class MockProjection:
# Line 137  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 167  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 206  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 245  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 279  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
290          #hexed = binascii.b2a_base64(renderer.raster_data)          #hexed = binascii.b2a_base64(renderer.raster_data[2][1])
291          #while hexed:          #while hexed:
292          #    print repr(hexed[:65])              #print repr(hexed[:65])
293          #    hexed = hexed[65:]              #hexed = hexed[65:]
294    
295          # The reference data as a base64 coded BMP image          # The reference data as a base64 coded RAW image
296          raw_data = binascii.a2b_base64(          raw_data = binascii.a2b_base64(
297              'Qk3GBQAAAAAAADYEAAAoAAAAFAAAABQAAAABAAgAAAAAAJABAAAAAAAAAAAAAAABA'              'UmbmUmbmUmbmUmbmUmbmAtYCJooCAtICAq4CJooCArICAuICArICAuYCAs4COn4CO'
298              'AAAAAAAApYOAALGAgAGfjoAHmZyACZ2egAujo4AArICAE66GgACngIA5mZSAJqONg'              'n4CAq4CAuICFpICUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAuYCAqICAqoCAqoCFp'
299              'ACzgIAAoIyABZqZgAO4uYAAtICAAKqAgAScloAAtYCADKepgAS2t4AAooiAALaAgA'              'ICJooCIo4CCpoCQnoGOn4CDpYCOn4CUmbmUmbmNo6aEpYCLoYCAqICGpICFpICUmb'
300              'CtgIAHsbOAAp2TgACogIAFtbaACqOigAidnoAAuICADKaogACfjoAAr4CAAKSFgAm'              'mAt4CUmbmNo6aAtICArYCAqoCKoYCMoICTnYKOn4CFpICUmbmUmbmUmbmUmbmAp4C'
301              'fnoAAo4eABrS1gAibnoAHsbKAAp6SgACmg4AGs7SACLCxgAqioIAAoYqAAZ6RgACm'              'NoICArYCAr4CCpoCAqYCCpoCEpYCHo4CFpICHo4CGpICFpICKoYCTnYKMoICAp4CU'
302              'goAKrK6AALmAgAC3gIAApIaABZqagACngYAAo4iAAKmAgAivsYAJoJ6AALCAgACyg'              'mbmUmbmUmbmUmbmUmbmUmbmAtYCAroCArYCCpoCAtYCAroCAtICAsYCUmbmAt4CAq'
303              'IAAq4CAAKWEgAOclYALpqeAAK6AgACgjYAEm5eAAKKKgAGekIAHmp6ABpmcgAChi4'              'YCAroCMoICAs4CAs4CAtYCAt4CAqYCUmbmUmbmUmbmUmbmAtoCAtYCAq4CAtoCBp4'
304              'ALpaaACJyegAClhYAEnJeAAZ+QgAqhoIADnZSAB5mdgACiiYAJnp6ACqGegAqrrYA'              'CAroCAqoCAq4CAr4CDpYCGpICAt4CAsICDpYCArICCpoCHo4CAs4CAuICUmbmUmbm'
305              'GmpuAB5megACkh4ALqqyAA52VgAulpYAAoI6AAZ+PgASbmIALpKWAA7m5gAWbmYAG'              'UmbmUmbmUmbmUmbmAuICAqICFpYCAq4CDpoCAqYCFpICAqYCUmbmNo6aAsYCCpoCD'
306              'mpyAC6SjgAqioYADnZOAA7q6gAianoALqauABpqagAqgnoAEnJWAAp6RgAWbmIACu'              'pYCAqICAtoCUmbmAt4CAqoCCpoCAroCHo4CAsYCAq4CAsICAs4CAp4CUmbmAtYCAq'
307              '7uACqGfgAqiooAMqauAAby8gAmusIAMp6qAC6WngAyoqoABvb2AC6SkgAS3uIAJra'              'YCIooCHo4CAsICAr4CAqICEpYCAs4CAqICArICDpYCEpYCEpYCAr4CUmbmEpYCAs4'
308              '+AB7KzgAynqIALq62ADKirgAC+voAGsrSABLi4gAG8vYADubqAC6qtgAuprIABvb6'              'CAtICAs4CAqYCUmbmAtoCAp4CCpoCDpYCAq4CArICAqoCAqYCAqYCAtYCAtoCDpYC'
309              'ACLCygAW2t4AKra+AAru8gAS4uYACuruAAry8gAG+voAAEBAAFhkZABAQEAABp6fA'              'At4CUmbmUmbmUmbmUmbmAt4CAsoCAsoCAp4CAp4CCpoCAsoCAt4CNo6aUmbmUmbmU'
310              'EBACAAAgPwAAPu/AJE9CgBACAAALj1BAEAICAAGPAAAQAgAAAY8+gBACL8AJTxXAA'              'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAt4CAtYCCpoCAqICAroCAr4CUmbmUm'
311              'gIQAAAPEAAAAgIAAY8QABACAgAAGQAAABAAAAALpoAAEBAAAAALgAAAEAABkAGAEA'              'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
312              'IQAD2AEAAvwAIAJAu2ABAQEAALmQ5AEBAQAAAnp8AAEAIAAD4+gAAv78An5rDAEBA'              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
313              'QAAuhAcAQEBAAAb8AABAvwAAAGQKAABAAABpLksAQEAIAC4ACwBAAAAAAPkGAAC/Q'              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmU'
314              'AD2APoAvwC/AJ0umgBAQEAAAGRkAABAQAAGnp8AQEAIAPcA/AC/AL8A7D0GAEAIQA'              'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUm'
315              'D4hAAAv0AAAAD8QAAAvwgA92T6AL9AvwDsLlcAQEBAAC4AQABAAAgA+EAAAL8IAAA'              'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
316              '8AAAACAAAAJ8uVgBAQEAAAGQ5AABAQAAAnpcAAEBAAPYAQAC/AAgAnQsGAEAAQAAA'              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
317              'hG0AAEBAAB38PQAIv0AA9mT6AL9AvwAJLmwAZUBAAB0AQAAIAAgAHUAAAAgIAAAAA'              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmU'
318              'AAAAAAAAACzbAAAQEAA//k5AH+/QAAGb5cAQEBAAACy5AAAQAgAAIpAAABACAAAAA'              'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUm'
319              'AAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk'              'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
320              'JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ'              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
321              'CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJC'              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')
322              'QkJCQkJCQkJCQkJCQkJCQkJCQkyEi8aQCEJCQkJCQkJCQkJCQkJCTI7OwgILzsyCg'  
323              'kJCQkJCQkJCQkJCzcJFggvADwGEDc3EhYAMgkJCQkJEjcVJDohGj0LGgYAPT0hCT0'          raw_mask = binascii.a2b_base64(
324              'LDyI3CQoBLwAaFgkyEC9AJAE8OgsIMjoABi8kCx4JCQkJCQkeGko8KTcLCxIyNwkJ'              'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
325              'CQkWEjwWNUAQPCEAMwgJCQkJCQkSQBcvEkAPAQkyN0AMCQkJCQhBFyEvNy89JCIkM'              'AAAAAAAAAAAAAAA\n')
326              'yItGQwJCQo9RxozIgkyCQoPFxAtDBkgIgkJCQkJCQkJMRoQECJQNi9EIAAgCQkJCQ'          self.assertEquals(renderer.raster_data, (20,20,(raw_data, raw_mask)))
327              'kSUA88UAYeBjELICA8HiI=\n')          self.assertEquals(renderer.raster_format, "RAW")
         self.assertEquals(renderer.raster_data, raw_data)  
328    
329          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
330                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 346  class TestBaseRenderer(unittest.TestCase Line 347  class TestBaseRenderer(unittest.TestCase
347          self.to_destroy.append(map)          self.to_destroy.append(map)
348    
349          dc = MockDC()          dc = MockDC()
350          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
351    
352          renderer.render_map(map)          renderer.render_map()
353    
354          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
355                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 374  class TestBaseRenderer(unittest.TestCase Line 375  class TestBaseRenderer(unittest.TestCase
375          self.to_destroy.append(map)          self.to_destroy.append(map)
376    
377          dc = MockDC()          dc = MockDC()
378          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
379    
380          renderer.render_map(map)          renderer.render_map()
381    
382          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
383                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 403  class TestBaseRenderer(unittest.TestCase Line 404  class TestBaseRenderer(unittest.TestCase
404          self.to_destroy.append(map)          self.to_destroy.append(map)
405    
406          dc = MockDC()          dc = MockDC()
407          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
408    
409          renderer.render_map(map)          renderer.render_map()
410    
411          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
412                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 416  class TestBaseRenderer(unittest.TestCase Line 417  class TestBaseRenderer(unittest.TestCase
417                             ('EndDrawing',)])                             ('EndDrawing',)])
418    
419    
420        def test_point_with_classification(self):
421            """Test BaseRenderer with point layer and classification"""
422            table = MemoryTable([("type", FIELDTYPE_STRING),
423                                 ("value", FIELDTYPE_DOUBLE),
424                                 ("code", FIELDTYPE_INT)],
425                                [("UNKNOWN", 0.0, 0),
426                                 ("UNKNOWN", 0.0, 1)])
427            shapes = [[[(0, 0)]], [[(10, 10)]]]
428            store = SimpleShapeStore(SHAPETYPE_POINT, shapes, table)
429    
430            map = Map("TestBaseRenderer")
431            layer = Layer("point layer", store)
432            group = ClassGroupSingleton(1)
433            group.GetProperties().SetFill(Color(0, 0, 1))
434            layer.GetClassification().AppendGroup(group)
435            layer.SetClassificationColumn("code")
436    
437            map.AddLayer(layer)
438            self.to_destroy.append(map)
439    
440            dc = MockDC()
441            renderer = SimpleRenderer(dc, map, 2, (10, 10))
442    
443            renderer.render_map()
444    
445            self.assertEquals(dc.calls,
446                              [('BeginDrawing',),
447                               ('SetBrush', ('brush', Transparent)),
448                               ('SetPen', ('pen', Color(0, 0, 0), 1)),
449                               ('DrawEllipse', 5, 5, 10, 10),
450                               ('SetBrush', ('brush', Color(0, 0, 1))),
451                               ('SetPen', ('pen', Color(0, 0, 0), 1)),
452                               ('DrawEllipse', 25, -15, 10, 10),
453                               ('SetFont', "label font"),
454                               ('EndDrawing',)])
455    
456    
457        def test_renderer_extension(self):
458            """Test renderer with a renderer extension"""
459            class MyLayer(BaseLayer):
460                pass
461    
462            calls = []
463            def my_renderer(renderer, layer):
464                calls.append((renderer, layer))
465                return ()
466    
467            add_renderer_extension(MyLayer, my_renderer)
468    
469            try:
470                map = Map("test_renderer_extension")
471                layer = MyLayer("my layer")
472                map.AddLayer(layer)
473                self.to_destroy.append(map)
474    
475                dc = MockDC()
476                renderer = SimpleRenderer(dc, map, 2, (10, 10))
477                renderer.render_map()
478            finally:
479                init_renderer_extensions()
480    
481            self.assertEquals(calls, [(renderer, layer)])
482    
483    
484  if __name__ == "__main__":  if __name__ == "__main__":
485      support.run_tests()      support.run_tests()

Legend:
Removed from v.1585  
changed lines
  Added in v.2552

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26