/[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 2562 by jonathan, Wed Feb 16 21:14:47 2005 UTC revision 2587 by jonathan, Wed Mar 23 15:30:27 2005 UTC
# Line 1  Line 1 
1  # Copyright (C) 2003 by Intevation GmbH  # Copyright (C) 2003, 2005 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  #  #
# Line 32  import Thuban.Model.resource Line 32  import Thuban.Model.resource
32  from Thuban.UI.baserenderer import BaseRenderer, \  from Thuban.UI.baserenderer import BaseRenderer, \
33       add_renderer_extension, init_renderer_extensions       add_renderer_extension, init_renderer_extensions
34    
35  from Thuban.version import versions  if Thuban.Model.resource.has_gdal_support():
36        from gdalwarp import ProjectRasterFile
37    
38  class MockDC:  class MockDC:
39    
# Line 90  class SimpleRenderer(BaseRenderer): Line 91  class SimpleRenderer(BaseRenderer):
91      def label_font(self):      def label_font(self):
92          return "label font"          return "label font"
93    
94      def draw_raster_data(self, x, y, data, format='BMP'):      def draw_raster_data(self, layer, x, y, data, format='BMP'):
95          self.raster_data = data          self.raster_data = data
96          self.raster_format = format          self.raster_format = format
97    
98        def projected_raster_layer(self, layer, srcProj, dstProj, extents,
99                                   resolution, dimensions, options):
100    
101            if not Thuban.Model.resource.has_gdal_support():
102                raise support.SkipTest("No gdal support")
103    
104            #print srcProj, dstProj,extents, resolution, dimensions, options
105    
106            return ProjectRasterFile(layer.GetImageFilename(),
107                                     srcProj, dstProj,
108                                     extents, resolution, dimensions,
109                                     options)
110    
111  class MockProjection:  class MockProjection:
112    
113      """Objects that look like projections but simply apply non-uniform scalings      """Objects that look like projections but simply apply non-uniform scalings
# Line 116  class TestBaseRenderer(unittest.TestCase Line 129  class TestBaseRenderer(unittest.TestCase
129      def setUp(self):      def setUp(self):
130          """Set self.to_destroy to an empty list          """Set self.to_destroy to an empty list
131    
132          Test should put all objects whose Destroy should be called atunittest.main          Tests should put all objects whose Destroy should be called at
133          the end into this list so that they're destroyed in tearDown          the end into this list so that they're destroyed in tearDown.
134          """          """
135          self.to_destroy = []          self.to_destroy = []
136    
# Line 263  class TestBaseRenderer(unittest.TestCase Line 276  class TestBaseRenderer(unittest.TestCase
276                             ('SetFont', "label font"),                             ('SetFont', "label font"),
277                             ('EndDrawing',)])                             ('EndDrawing',)])
278    
279        def test_projected_raster_layer(self):
280            if not Thuban.Model.resource.has_gdal_support():
281                raise support.SkipTest("No gdal support")
282    
283            layer = RasterLayer("raster layer",
284                                os.path.join("..", "Data", "iceland",
285                                             "island.tif"))
286    
287            dc = MockDC(size = (20, 20))
288            renderer = SimpleRenderer(dc, map, 34, (800, 2250))
289    
290            # The reference data as a base64 coded RAW image
291            raw_data = binascii.a2b_base64(
292                'UmbmUmbmUmbmUmbmUmbmAtYCJooCAtICAq4CJooCArICAuICArICAuYCAs4COn4CO'
293                'n4CAq4CAuICFpICUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAuYCAqICAqoCAqoCFp'
294                'ICJooCIo4CCpoCQnoGOn4CDpYCOn4CUmbmUmbmNo6aEpYCLoYCAqICGpICFpICUmb'
295                'mAt4CUmbmNo6aAtICArYCAqoCKoYCMoICTnYKOn4CFpICUmbmUmbmUmbmUmbmAp4C'
296                'NoICArYCAr4CCpoCAqYCCpoCEpYCHo4CFpICHo4CGpICFpICKoYCTnYKMoICAp4CU'
297                'mbmUmbmUmbmUmbmUmbmUmbmAtYCAroCArYCCpoCAtYCAroCAtICAsYCUmbmAt4CAq'
298                'YCAroCMoICAs4CAs4CAtYCAt4CAqYCUmbmUmbmUmbmUmbmAtoCAtYCAq4CAtoCBp4'
299                'CAroCAqoCAq4CAr4CDpYCGpICAt4CAsICDpYCArICCpoCHo4CAs4CAuICUmbmUmbm'
300                'UmbmUmbmUmbmUmbmAuICAqICFpYCAq4CDpoCAqYCFpICAqYCUmbmNo6aAsYCCpoCD'
301                'pYCAqICAtoCUmbmAt4CAqoCCpoCAroCHo4CAsYCAq4CAsICAs4CAp4CUmbmAtYCAq'
302                'YCIooCHo4CAsICAr4CAqICEpYCAs4CAqICArICDpYCEpYCEpYCAr4CUmbmEpYCAs4'
303                'CAtICAs4CAqYCUmbmAtoCAp4CCpoCDpYCAq4CArICAqoCAqYCAqYCAtYCAtoCDpYC'
304                'At4CUmbmUmbmUmbmUmbmAt4CAsoCAsoCAp4CAp4CCpoCAsoCAt4CNo6aUmbmUmbmU'
305                'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAt4CAtYCCpoCAqICAroCAr4CUmbmUm'
306                'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
307                'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
308                'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmU'
309                'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUm'
310                'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
311                'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
312                'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmU'
313                'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUm'
314                'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
315                'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
316                'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')
317    
318            raw_mask = binascii.a2b_base64(
319                '//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P/'
320                '/8P//8P//8P//8P//8P\n')
321    
322            raw_mask_inverted = binascii.a2b_base64(
323                'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
324                'AAAAAAAAAAAAAAAAAAA\n')
325    
326            raw_alpha = binascii.a2b_base64(
327                '/////////////////////////////////////////////////////////////'
328                '/////////////////////////////////////////////////////////////'
329                '/////////////////////////////////////////////////////////////'
330                '/////////////////////////////////////////////////////////////'
331                '/////////////////////////////////////////////////////////////'
332                '/////////////////////////////////////////////////////////////'
333                '/////////////////////////////////////////////////////////////'
334                '/////////////////////////////////////////////////////////////'
335                '/////////////////////////////////////////////w==\n')
336    
337            for opts, data in [[1,   (raw_data, raw_mask,          None)],
338                               [1|4, (raw_data, raw_mask_inverted, None)],
339                               [2,   (raw_data, None,              raw_alpha)]]:
340    
341                img_data = renderer.projected_raster_layer(layer, "", "",
342                                (-24, 65, -23, 66), [0, 0], (20, 20), opts)
343                self.assertEquals(img_data, data)
344    
345      def test_raster_no_projection(self):      def test_raster_no_projection(self):
346          """Test BaseRenderer with raster layer and no projections          """Test BaseRenderer with raster layer and no projections
347    
# Line 278  class TestBaseRenderer(unittest.TestCase Line 357  class TestBaseRenderer(unittest.TestCase
357          layer = RasterLayer("raster layer",          layer = RasterLayer("raster layer",
358                              os.path.join("..", "Data", "iceland",                              os.path.join("..", "Data", "iceland",
359                                           "island.tif"))                                           "island.tif"))
360            layer.SetMaskType(layer.MASK_NONE)
361    
362          map.AddLayer(layer)          map.AddLayer(layer)
363          self.to_destroy.append(map)          self.to_destroy.append(map)
364    
# Line 321  class TestBaseRenderer(unittest.TestCase Line 402  class TestBaseRenderer(unittest.TestCase
402              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
403              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')
404    
         #print  
         #hexed = binascii.b2a_base64(renderer.raster_data[2][1])  
         #while hexed:  
             #print repr(hexed[:61])  
             #hexed = hexed[61:]  
   
   
         if versions['wxPython-tuple'] < (2,5,3):  
             raw_mask = binascii.a2b_base64(  
                 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'  
                 'AAAAAAAAAAAAAAAAAAA\n')  
         else:  
             raw_mask = binascii.a2b_base64(  
                 '//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P/'  
                 '/8P//8P//8P//8P//8P\n')  
   
405          self.assertEquals(renderer.raster_data,          self.assertEquals(renderer.raster_data,
406                            (20,20,(raw_data, raw_mask, None)))                            (20,20,(raw_data, None, None)))
407    
408          self.assertEquals(renderer.raster_format, "RAW")          self.assertEquals(renderer.raster_format, "RAW")
409    
# Line 347  class TestBaseRenderer(unittest.TestCase Line 412  class TestBaseRenderer(unittest.TestCase
412                             ('SetFont', "label font"),                             ('SetFont', "label font"),
413                             ('EndDrawing',)])                             ('EndDrawing',)])
414    
         if versions['wxPython-tuple'] >= (2,5,3):  
             layer.SetMaskType(layer.MASK_ALPHA)  
             renderer.render_map()  
   
             #print  
             #hexed = binascii.b2a_base64(renderer.raster_data[2][2])  
             #while hexed:  
                 #print repr(hexed[:61])  
                 #hexed = hexed[61:]  
             raw_alpha = binascii.a2b_base64(  
                 '/////////////////////////////////////////////////////////////'  
                 '/////////////////////////////////////////////////////////////'  
                 '/////////////////////////////////////////////////////////////'  
                 '/////////////////////////////////////////////////////////////'  
                 '/////////////////////////////////////////////////////////////'  
                 '/////////////////////////////////////////////////////////////'  
                 '/////////////////////////////////////////////////////////////'  
                 '/////////////////////////////////////////////////////////////'  
                 '/////////////////////////////////////////////w==\n')  
             self.assertEquals(renderer.raster_data,  
                               (20,20,(raw_data, None, raw_alpha)))  
   
   
         layer.SetMaskType(layer.MASK_NONE)  
         renderer.render_map()  
         self.assertEquals(renderer.raster_data, (20,20,(raw_data, None, None)))  
   
415      def test_point_map_projection(self):      def test_point_map_projection(self):
416          """Test BaseRenderer with point layer and map projection"""          """Test BaseRenderer with point layer and map projection"""
417          table = MemoryTable([("type", FIELDTYPE_STRING),          table = MemoryTable([("type", FIELDTYPE_STRING),

Legend:
Removed from v.2562  
changed lines
  Added in v.2587

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26