/[thuban]/trunk/thuban/test/test_save.py
ViewVC logotype

Diff of /trunk/thuban/test/test_save.py

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

revision 494 by jonathan, Mon Mar 10 10:45:33 2003 UTC revision 947 by jonathan, Tue May 20 15:27:19 2003 UTC
# Line 1  Line 1 
1  # Copyright (c) 2002 by Intevation GmbH  # Copyright (c) 2002, 2003 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  #  #
# Line 19  from StringIO import StringIO Line 19  from StringIO import StringIO
19    
20  import xml.sax  import xml.sax
21  import xml.sax.handler  import xml.sax.handler
22  from xml.sax import make_parser, ErrorHandler  from xml.sax import make_parser, ErrorHandler, SAXNotRecognizedException
23    
24  import support  import support
25  support.initthuban()  support.initthuban()
# Line 27  support.initthuban() Line 27  support.initthuban()
27  from Thuban.Model.save import save_session  from Thuban.Model.save import save_session
28  from Thuban.Model.session import Session  from Thuban.Model.session import Session
29  from Thuban.Model.map import Map  from Thuban.Model.map import Map
30  from Thuban.Model.layer import Layer  from Thuban.Model.layer import Layer, RasterLayer
31  from Thuban.Model.proj import Projection  from Thuban.Model.proj import Projection
32    
33    
# Line 54  def sax_eventlist(data): Line 54  def sax_eventlist(data):
54      parser.setErrorHandler(ErrorHandler())      parser.setErrorHandler(ErrorHandler())
55      parser.setFeature(xml.sax.handler.feature_namespaces, 1)      parser.setFeature(xml.sax.handler.feature_namespaces, 1)
56    
57        #
58        # see comment at the end of Thuban/Model/load.py
59        #
60        try:
61            parser.setFeature(xml.sax.handler.feature_validation, 0)
62            parser.setFeature(xml.sax.handler.feature_external_ges, 0)
63            parser.setFeature(xml.sax.handler.feature_external_pes, 0)
64        except SAXNotRecognizedException:
65            pass
66    
67      inpsrc = xml.sax.InputSource()      inpsrc = xml.sax.InputSource()
68      inpsrc.setByteStream(StringIO(data))      inpsrc.setByteStream(StringIO(data))
69      parser.parse(inpsrc)      parser.parse(inpsrc)
# Line 90  class SaveSessionTest(unittest.TestCase, Line 100  class SaveSessionTest(unittest.TestCase,
100          # use shapefile from the example data          # use shapefile from the example data
101          shpfile = os.path.join(os.path.dirname(__file__),          shpfile = os.path.join(os.path.dirname(__file__),
102                                 os.pardir, "Data", "iceland", "political.shp")                                 os.pardir, "Data", "iceland", "political.shp")
103          layer = Layer("My Layer", shpfile)          layer = Layer("My Layer", session.OpenShapefile(shpfile))
104            map.AddLayer(layer)
105    
106            filename = self.temp_file_name("save_singlemap.thuban")
107            save_session(session, filename)
108    
109            file = open(filename)
110            written_contents = file.read()
111            file.close()
112            expected_template = '''<?xml version="1.0" encoding="UTF-8"?>
113            <!DOCTYPE session SYSTEM "thuban.dtd">
114            <session title="single map&amp;layer">
115                <map title="Test Map">
116                    <projection name="Unknown">
117                        <parameter value="zone=26"/>
118                        <parameter value="proj=utm"/>
119                        <parameter value="ellps=clrk66"/>
120                    </projection>
121                    <layer title="My Layer" filename="%s"
122                    fill="None" stroke="#000000" stroke_width="1" visible="%s"/>
123                </map>
124            </session>'''
125            
126            expected_contents = expected_template % \
127                (os.path.join("..", "..", "Data", "iceland", "political.shp"),
128                 "true")
129    
130            #print written_contents
131            #print "********************************************"
132            #print expected_contents
133            self.compare_xml(written_contents, expected_contents)
134    
135            layer.SetVisible(False)
136            save_session(session, filename)
137    
138            file = open(filename)
139            written_contents = file.read()
140            file.close()
141            expected_contents = expected_template % \
142                (os.path.join("..", "..", "Data", "iceland", "political.shp"),
143                 "false")
144    
145            #print written_contents
146            #print "********************************************"
147            #print expected_contents
148            self.compare_xml(written_contents, expected_contents)
149    
150            session.Destroy()
151    
152        def testLayerProjection(self):
153            # deliberately put an apersand in the title :)
154            session = Session("single map&layer")
155            proj = Projection(["zone=26", "proj=utm", "ellps=clrk66"])
156            map = Map("Test Map", projection = proj)
157            session.AddMap(map)
158            # use shapefile from the example data
159            shpfile = os.path.join(os.path.dirname(__file__),
160                                   os.pardir, "Data", "iceland", "political.shp")
161            layer = Layer("My Layer", session.OpenShapefile(shpfile))
162            proj = Projection(["proj=lcc", "ellps=clrk66"], "Layer Projection")
163            layer.SetProjection(proj)
164          map.AddLayer(layer)          map.AddLayer(layer)
165    
166          filename = self.temp_file_name("save_singlemap.thuban")          filename = self.temp_file_name("save_singlemap.thuban")
# Line 104  class SaveSessionTest(unittest.TestCase, Line 174  class SaveSessionTest(unittest.TestCase,
174          <!DOCTYPE session SYSTEM "thuban.dtd">          <!DOCTYPE session SYSTEM "thuban.dtd">
175          <session title="single map&amp;layer">          <session title="single map&amp;layer">
176              <map title="Test Map">              <map title="Test Map">
177                  <projection>                  <projection name="Unknown">
178                      <parameter value="zone=26"/>                      <parameter value="zone=26"/>
179                      <parameter value="proj=utm"/>                      <parameter value="proj=utm"/>
180                      <parameter value="ellps=clrk66"/>                      <parameter value="ellps=clrk66"/>
181                  </projection>                  </projection>
182                  <layer title="My Layer" filename="%s"                  <layer title="My Layer" filename="%s"
183                  fill="None" stroke="#000000" stroke_width="1"/>                  fill="None" stroke="#000000" stroke_width="1" visible="true">
184                        <projection name="Layer Projection">
185                            <parameter value="proj=lcc"/>
186                            <parameter value="ellps=clrk66"/>
187                        </projection>
188                    </layer>
189              </map>              </map>
190          </session>''' % os.path.join("..", "..", "Data", "iceland",          </session>''' % os.path.join("..", "..", "Data", "iceland",
191                                       "political.shp")                                       "political.shp")
# Line 119  class SaveSessionTest(unittest.TestCase, Line 194  class SaveSessionTest(unittest.TestCase,
194          #print expected_contents          #print expected_contents
195          self.compare_xml(written_contents, expected_contents)          self.compare_xml(written_contents, expected_contents)
196    
197            
198        def testRasterLayer(self):
199            # deliberately put an apersand in the title :)
200            session = Session("single map&layer")
201            map = Map("Test Map")
202            session.AddMap(map)
203            # use shapefile from the example data
204            imgfile = os.path.join(os.path.dirname(__file__),
205                                   os.pardir, "Data", "iceland", "island.tif")
206            layer = RasterLayer("My RasterLayer", imgfile)
207            map.AddLayer(layer)
208                                                                                    
209            filename = self.temp_file_name("save_singlemap.thuban")
210            save_session(session, filename)
211            session.Destroy()
212                                                                                    
213            file = open(filename)
214            written_contents = file.read()
215            file.close()
216            expected_contents = '''<?xml version="1.0" encoding="UTF-8"?>
217            <!DOCTYPE session SYSTEM "thuban.dtd">
218            <session title="single map&amp;layer">
219                <map title="Test Map">
220                    <rasterlayer title="My RasterLayer" filename="%s"
221                                 visible="true">
222                    </rasterlayer>
223                </map>
224            </session>''' % os.path.join(os.path.dirname(__file__),
225                                         os.pardir, "Data", "iceland",
226                                         "island.tif")
227            #print written_contents
228            #print "********************************************"
229            #print expected_contents
230            self.compare_xml(written_contents, expected_contents)
231    
232    
233  if __name__ == "__main__":  if __name__ == "__main__":
234      # Fake the __file__ global because it's needed by a test      # Fake the __file__ global because it's needed by a test
235      import sys      import sys
236      __file__ = sys.argv[0]      __file__ = sys.argv[0]
237      unittest.main()      support.run_tests()

Legend:
Removed from v.494  
changed lines
  Added in v.947

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26