/[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 2537 by jonathan, Fri Jan 21 14:01:25 2005 UTC revision 2573 by bh, Fri Feb 18 19:28:45 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    if Thuban.Model.resource.has_gdal_support():
36        from gdalwarp import ProjectRasterFile
37    
38  class MockDC:  class MockDC:
39    
# Line 89  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', mask = None):      def draw_raster_data(self, 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 115  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 262  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 277  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 287  class TestBaseRenderer(unittest.TestCase Line 369  class TestBaseRenderer(unittest.TestCase
369    
370          # The following commented out code block can be used to generate          # The following commented out code block can be used to generate
371          # the base64 coded reference image data          # the base64 coded reference image data
372          #hexed = binascii.b2a_base64(renderer.raster_data[2])          #hexed = binascii.b2a_base64(renderer.raster_data[2][0])
373          #while hexed:          #while hexed:
374              #print repr(hexed[:65])              #print repr(hexed[:65])
375              #hexed = hexed[65:]              #hexed = hexed[65:]
376    
377          # The reference data as a base64 coded BMP image          # The reference data as a base64 coded RAW image
378          raw_data = binascii.a2b_base64(          raw_data = binascii.a2b_base64(
379              'UmbmUmbmUmbmUmbmUmbmAtYCJooCAtICAq4CJooCArICAuICArICAuYCAs4COn4CO'              'UmbmUmbmUmbmUmbmUmbmAtYCJooCAtICAq4CJooCArICAuICArICAuYCAs4COn4CO'
380              'n4CAq4CAuICFpICUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAuYCAqICAqoCAqoCFp'              'n4CAq4CAuICFpICUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAuYCAqICAqoCAqoCFp'
# Line 319  class TestBaseRenderer(unittest.TestCase Line 401  class TestBaseRenderer(unittest.TestCase
401              'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'              'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
402              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
403              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')
404          self.assertEquals(renderer.raster_data, [20,20,raw_data])  
405            self.assertEquals(renderer.raster_data,
406                              (20,20,(raw_data, None, None)))
407    
408          self.assertEquals(renderer.raster_format, "RAW")          self.assertEquals(renderer.raster_format, "RAW")
409    
410          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,

Legend:
Removed from v.2537  
changed lines
  Added in v.2573

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26