/[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 1678 by bh, Thu Aug 28 13:36:23 2003 UTC revision 2621 by jonathan, Fri May 6 14:19:40 2005 UTC
# Line 1  Line 1 
1  # Copyright (c) 2002, 2003 by Intevation GmbH  # Copyright (c) 2002, 2003, 2004 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  #  #
# Line 65  class XMLWriterTest(unittest.TestCase): Line 65  class XMLWriterTest(unittest.TestCase):
65  class SaveSessionTest(unittest.TestCase, support.FileTestMixin,  class SaveSessionTest(unittest.TestCase, support.FileTestMixin,
66                        xmlsupport.ValidationTest):                        xmlsupport.ValidationTest):
67    
68      dtd = "http://thuban.intevation.org/dtds/thuban-0.9.dtd"      dtd = "http://thuban.intevation.org/dtds/thuban-1.1-dev.dtd"
69      thubanids = [((dtd, n), (None, "id")) for n in      thubanids = [((dtd, n), (None, "id")) for n in
70                   ["fileshapesource", "filetable", "jointable",                   ["fileshapesource", "filetable", "jointable",
71                    "derivedshapesource", "dbshapesource", "dbconnection"]]                    "derivedshapesource", "dbshapesource", "dbconnection"]]
# Line 111  class SaveSessionTest(unittest.TestCase, Line 111  class SaveSessionTest(unittest.TestCase,
111          file.close()          file.close()
112          self.compare_xml(written_contents,          self.compare_xml(written_contents,
113                           '<?xml version="1.0" encoding="UTF-8"?>\n'                           '<?xml version="1.0" encoding="UTF-8"?>\n'
114                           '<!DOCTYPE session SYSTEM "thuban-0.9.dtd">\n'                           '<!DOCTYPE session SYSTEM "thuban-1.1.dtd">\n'
115                           '<session title="empty session" '                           '<session title="empty session" '
116           'xmlns="http://thuban.intevation.org/dtds/thuban-0.9.dtd">'           'xmlns="http://thuban.intevation.org/dtds/thuban-1.1-dev.dtd">'
117                           '\n</session>\n')                           '\n</session>\n')
118    
119          self.validate_data(written_contents)          self.validate_data(written_contents)
# Line 122  class SaveSessionTest(unittest.TestCase, Line 122  class SaveSessionTest(unittest.TestCase,
122          """Save a session with a single map with a single layer"""          """Save a session with a single map with a single layer"""
123          # deliberately put an apersand in the title :)          # deliberately put an apersand in the title :)
124          session = Session("single map&layer")          session = Session("single map&layer")
125          proj = Projection(["zone=26", "proj=utm", "ellps=clrk66"])          proj = Projection(["proj=utm", "zone=27", "ellps=WGS84",
126                               "datum=WGS84", "units=m"],
127                              name = "WGS 84 / UTM zone 27N",
128                              epsg = "32627")
129          map = Map("Test Map", projection = proj)          map = Map("Test Map", projection = proj)
130          session.AddMap(map)          session.AddMap(map)
131          # use shapefile from the example data          # use shapefile from the example data
# Line 138  class SaveSessionTest(unittest.TestCase, Line 141  class SaveSessionTest(unittest.TestCase,
141          written_contents = file.read()          written_contents = file.read()
142          file.close()          file.close()
143          expected_template = '''<?xml version="1.0" encoding="UTF-8"?>          expected_template = '''<?xml version="1.0" encoding="UTF-8"?>
144          <!DOCTYPE session SYSTEM "thuban-0.9.dtd">          <!DOCTYPE session SYSTEM "thuban-1.1.dtd">
145          <session title="single map&amp;layer"          <session title="single map&amp;layer"
146             xmlns="http://thuban.intevation.org/dtds/thuban-0.9.dtd">             xmlns="http://thuban.intevation.org/dtds/thuban-1.1-dev.dtd">
147              <fileshapesource id="D1" filename="%s" filetype="shapefile"/>              <fileshapesource id="D1"
148                    filename="../../Data/iceland/political.shp"
149                    filetype="shapefile"/>
150              <map title="Test Map">              <map title="Test Map">
151                  <projection name="Unknown">                  <projection epsg="32627" name="WGS 84 / UTM zone 27N">
                     <parameter value="zone=26"/>  
152                      <parameter value="proj=utm"/>                      <parameter value="proj=utm"/>
153                      <parameter value="ellps=clrk66"/>                      <parameter value="zone=27"/>
154                        <parameter value="ellps=WGS84"/>
155                        <parameter value="datum=WGS84"/>
156                        <parameter value="units=m"/>
157                  </projection>                  </projection>
158                  <layer title="My Layer" shapestore="D1"                  <layer title="My Layer" shapestore="D1"
159                  fill="None" stroke="#000000" stroke_width="1" visible="%s"/>                  fill="None" stroke="#000000" stroke_width="1" visible="%s"/>
160              </map>              </map>
161          </session>'''          </session>'''
162    
163          expected_contents = expected_template % \          expected_contents = expected_template % "true"
             (os.path.join("..", "..", "Data", "iceland", "political.shp"),  
              "true")  
164    
165          self.compare_xml(written_contents, expected_contents)          self.compare_xml(written_contents, expected_contents)
166    
167          self.validate_data(written_contents)          self.validate_data(written_contents)
168    
169            # Repeat with an invisible layer
170          layer.SetVisible(False)          layer.SetVisible(False)
171          save_session(session, filename)          save_session(session, filename)
172    
173          file = open(filename)          file = open(filename)
174          written_contents = file.read()          written_contents = file.read()
175          file.close()          file.close()
176          expected_contents = expected_template % \          expected_contents = expected_template % "false"
             (os.path.join("..", "..", "Data", "iceland", "political.shp"),  
              "false")  
177          self.compare_xml(written_contents, expected_contents)          self.compare_xml(written_contents, expected_contents)
178          self.validate_data(written_contents)          self.validate_data(written_contents)
179    
# Line 186  class SaveSessionTest(unittest.TestCase, Line 190  class SaveSessionTest(unittest.TestCase,
190          shpfile = os.path.join(os.path.dirname(__file__),          shpfile = os.path.join(os.path.dirname(__file__),
191                                 os.pardir, "Data", "iceland", "political.shp")                                 os.pardir, "Data", "iceland", "political.shp")
192          layer = Layer("My Layer", session.OpenShapefile(shpfile))          layer = Layer("My Layer", session.OpenShapefile(shpfile))
193          proj = Projection(["proj=lcc", "ellps=clrk66"], "Layer Projection")          proj = Projection(["proj=lcc", "ellps=clrk66",
194                               "lat_1=0", "lat_2=20"],
195                              "Layer Projection")
196          layer.SetProjection(proj)          layer.SetProjection(proj)
197          map.AddLayer(layer)          map.AddLayer(layer)
198    
# Line 197  class SaveSessionTest(unittest.TestCase, Line 203  class SaveSessionTest(unittest.TestCase,
203          written_contents = file.read()          written_contents = file.read()
204          file.close()          file.close()
205          expected_contents = '''<?xml version="1.0" encoding="UTF-8"?>          expected_contents = '''<?xml version="1.0" encoding="UTF-8"?>
206          <!DOCTYPE session SYSTEM "thuban-0.9.dtd">          <!DOCTYPE session SYSTEM "thuban-1.1.dtd">
207          <session title="single map&amp;layer"          <session title="single map&amp;layer"
208             xmlns="http://thuban.intevation.org/dtds/thuban-0.9.dtd">             xmlns="http://thuban.intevation.org/dtds/thuban-1.1-dev.dtd">
209              <fileshapesource id="D1" filename="%s" filetype="shapefile"/>              <fileshapesource id="D1"
210                    filename="../../Data/iceland/political.shp"
211                    filetype="shapefile"/>
212              <map title="Test Map">              <map title="Test Map">
213                  <projection name="Unknown">                  <projection name="Unknown">
214                      <parameter value="zone=26"/>                      <parameter value="zone=26"/>
# Line 212  class SaveSessionTest(unittest.TestCase, Line 220  class SaveSessionTest(unittest.TestCase,
220                      <projection name="Layer Projection">                      <projection name="Layer Projection">
221                          <parameter value="proj=lcc"/>                          <parameter value="proj=lcc"/>
222                          <parameter value="ellps=clrk66"/>                          <parameter value="ellps=clrk66"/>
223                            <parameter value="lat_1=0"/>
224                            <parameter value="lat_2=20"/>
225                      </projection>                      </projection>
226                  </layer>                  </layer>
227              </map>              </map>
228          </session>''' % os.path.join("..", "..", "Data", "iceland",          </session>'''
                                      "political.shp")  
229          #print written_contents          #print written_contents
230          #print "********************************************"          #print "********************************************"
231          #print expected_contents          #print expected_contents
# Line 225  class SaveSessionTest(unittest.TestCase, Line 234  class SaveSessionTest(unittest.TestCase,
234          self.validate_data(written_contents)          self.validate_data(written_contents)
235    
236      def testRasterLayer(self):      def testRasterLayer(self):
         # deliberately put an apersand in the title :)  
         session = Session("single map&layer")  
         map = Map("Test Map")  
         session.AddMap(map)  
         # use shapefile from the example data  
         imgfile = os.path.join(os.path.dirname(__file__),  
                                os.pardir, "Data", "iceland", "island.tif")  
         layer = RasterLayer("My RasterLayer", imgfile)  
         map.AddLayer(layer)  
237    
238          filename = self.temp_file_name("%s.thuban" % self.id())          MASK_NONE = RasterLayer.MASK_NONE
239          save_session(session, filename)          MASK_BIT = RasterLayer.MASK_BIT
240          session.Destroy()          MASK_ALPHA = RasterLayer.MASK_ALPHA
241    
242            for opacity, masktype, opname, maskname in \
243                [(1,  MASK_BIT,   '', ''),
244                 (.2, MASK_BIT,   'opacity="0.2"', ''),
245                 (1,  MASK_ALPHA, '',              'masktype="alpha"'),
246                 (.5, MASK_ALPHA, 'opacity="0.5"', 'masktype="alpha"'),
247                 (1,  MASK_NONE,  '',              'masktype="none"'),
248                 (0,  MASK_NONE,  'opacity="0"',   'masktype="none"') ]:
249    
         file = open(filename)  
         written_contents = file.read()  
         file.close()  
         expected_contents = '''<?xml version="1.0" encoding="UTF-8"?>  
         <!DOCTYPE session SYSTEM "thuban-0.9.dtd">  
         <session title="single map&amp;layer"  
            xmlns="http://thuban.intevation.org/dtds/thuban-0.9.dtd">  
             <map title="Test Map">  
                 <rasterlayer title="My RasterLayer" filename="%s"  
                              visible="true">  
                 </rasterlayer>  
             </map>  
         </session>''' % os.path.join(os.pardir, os.pardir, "Data", "iceland",  
                                      "island.tif")  
         #print written_contents  
         #print "********************************************"  
         #print expected_contents  
         self.compare_xml(written_contents, expected_contents)  
250    
251          self.validate_data(written_contents)              # deliberately put an apersand in the title :)
252                session = Session("single map&layer")
253                map = Map("Test Map")
254                session.AddMap(map)
255                # use shapefile from the example data
256                imgfile = os.path.join(os.path.dirname(__file__),
257                                       os.pardir, "Data", "iceland", "island.tif")
258                layer = RasterLayer("My RasterLayer", imgfile)
259    
260                layer.SetOpacity(opacity)
261                layer.SetMaskType(masktype)
262    
263                map.AddLayer(layer)
264    
265                filename = self.temp_file_name("%s.thuban" % self.id())
266                save_session(session, filename)
267                session.Destroy()
268    
269                file = open(filename)
270                written_contents = file.read()
271                file.close()
272                expected_contents = '''<?xml version="1.0" encoding="UTF-8"?>
273                <!DOCTYPE session SYSTEM "thuban-1.1.dtd">
274                <session title="single map&amp;layer"
275                   xmlns="http://thuban.intevation.org/dtds/thuban-1.1-dev.dtd">
276                    <map title="Test Map">
277                        <rasterlayer title="My RasterLayer"
278                                filename="../../Data/iceland/island.tif"
279                                visible="true" %s %s>
280                        </rasterlayer>
281                    </map>
282                </session>''' % (opname, maskname)
283                #print written_contents
284                #print "********************************************"
285                #print expected_contents
286                self.compare_xml(written_contents, expected_contents)
287    
288                self.validate_data(written_contents)
289    
290      def testClassifiedLayer(self):      def testClassifiedLayer(self):
291          """Save a session with a single map with classifications"""          """Save a session with a single map with classifications"""
# Line 309  class SaveSessionTest(unittest.TestCase, Line 336  class SaveSessionTest(unittest.TestCase,
336          file = open(filename)          file = open(filename)
337          written_contents = file.read()          written_contents = file.read()
338          file.close()          file.close()
339          expected_template = '''<?xml version="1.0" encoding="UTF-8"?>          expected_contents = '''<?xml version="1.0" encoding="UTF-8"?>
340          <!DOCTYPE session SYSTEM "thuban-0.9.dtd">          <!DOCTYPE session SYSTEM "thuban-1.1.dtd">
341          <session title="Map with Classifications"          <session title="Map with Classifications"
342             xmlns="http://thuban.intevation.org/dtds/thuban-0.9.dtd">             xmlns="http://thuban.intevation.org/dtds/thuban-1.1-dev.dtd">
343              <fileshapesource id="D1" filename="%s" filetype="shapefile"/>              <fileshapesource id="D1"
344                    filename="../../Data/iceland/political.shp"
345                    filetype="shapefile"/>
346              <map title="Test Map">              <map title="Test Map">
347                  <projection name="Unknown">                  <projection name="Unknown">
348                      <parameter value="zone=26"/>                      <parameter value="zone=26"/>
# Line 321  class SaveSessionTest(unittest.TestCase, Line 350  class SaveSessionTest(unittest.TestCase,
350                      <parameter value="ellps=clrk66"/>                      <parameter value="ellps=clrk66"/>
351                  </projection>                  </projection>
352                  <layer title="My Layer" shapestore="D1"                  <layer title="My Layer" shapestore="D1"
353                  fill="None" stroke="#000000" stroke_width="1" visible="%s">                  fill="None" stroke="#000000" stroke_width="1" visible="true">
354                      <classification field="AREA" field_type="double">                      <classification field="AREA" field_type="double">
355                          <clnull label="">                          <clnull label="">
356                              <cldata fill="None" stroke="#000000" stroke_width="1"/>                              <cldata fill="None" stroke="#000000" stroke_width="1"/>
# Line 355  class SaveSessionTest(unittest.TestCase, Line 384  class SaveSessionTest(unittest.TestCase,
384              </map>              </map>
385          </session>'''          </session>'''
386    
         expected_contents = expected_template % \  
             (os.path.join("..", "..", "Data", "iceland", "political.shp"),  
              "true")  
   
387          #print written_contents          #print written_contents
388          #print "********************************************"          #print "********************************************"
389          #print expected_contents          #print expected_contents
# Line 382  class SaveSessionTest(unittest.TestCase, Line 407  class SaveSessionTest(unittest.TestCase,
407          file = open(filename)          file = open(filename)
408          written_contents = file.read()          written_contents = file.read()
409          file.close()          file.close()
410          expected_template = '''<?xml version="1.0" encoding="UTF-8"?>          expected_contents = '''<?xml version="1.0" encoding="UTF-8"?>
411          <!DOCTYPE session SYSTEM "thuban-0.9.dtd">          <!DOCTYPE session SYSTEM "thuban-1.1.dtd">
412          <session title="a DBF Table session"          <session title="a DBF Table session"
413             xmlns="http://thuban.intevation.org/dtds/thuban-0.9.dtd">             xmlns="http://thuban.intevation.org/dtds/thuban-1.1-dev.dtd">
414              <filetable id="D1" filename="%s" filetype="DBF" title="political"/>              <filetable id="D1" filename="../../Data/iceland/political.dbf"
415                    filetype="DBF" title="political"/>
416          </session>'''          </session>'''
417    
         expected_contents = (expected_template  
                              % os.path.join(os.pardir, os.pardir, "Data",  
                                             "iceland", "political.dbf"))  
418          self.compare_xml(written_contents, expected_contents)          self.compare_xml(written_contents, expected_contents)
419          self.validate_data(written_contents)          self.validate_data(written_contents)
420    
# Line 442  class SaveSessionTest(unittest.TestCase, Line 465  class SaveSessionTest(unittest.TestCase,
465              file = open(filename)              file = open(filename)
466              written_contents = file.read()              written_contents = file.read()
467              file.close()              file.close()
468              expected_template = '''<?xml version="1.0" encoding="UTF-8"?>              expected_contents = '''<?xml version="1.0" encoding="UTF-8"?>
469              <!DOCTYPE session SYSTEM "thuban-0.9.dtd">              <!DOCTYPE session SYSTEM "thuban-1.1.dtd">
470              <session title="A Joined Table session"              <session title="A Joined Table session"
471               xmlns="http://thuban.intevation.org/dtds/thuban-0.9.dtd">               xmlns="http://thuban.intevation.org/dtds/thuban-1.1-dev.dtd">
472                  <fileshapesource filename="%(shpfile)s"                  <fileshapesource filename="../../Data/iceland/roads-line.shp"
473                                   filetype="shapefile" id="D142197204"/>                                   filetype="shapefile" id="D142197204"/>
474                  <filetable filename="%(dbffile)s"                  <filetable filename="save_joinedtable.dbf"
475                             title="save_joinedtable"                             title="save_joinedtable"
476                             filetype="DBF" id="D141881756"/>                             filetype="DBF" id="D141881756"/>
477                  <jointable id="D142180284"                  <jointable id="D142180284"
# Line 466  class SaveSessionTest(unittest.TestCase, Line 489  class SaveSessionTest(unittest.TestCase,
489                  </map>                  </map>
490              </session>'''              </session>'''
491    
             expected_contents = expected_template % {  
                 "dbffile": relative_filename(self.temp_dir(), dbffile),  
                 "shpfile": relative_filename(self.temp_dir(), shpfile)  
                 }  
492              self.compare_xml(written_contents, expected_contents)              self.compare_xml(written_contents, expected_contents)
493              self.validate_data(written_contents)              self.validate_data(written_contents)
494          finally:          finally:
# Line 488  class SaveSessionTest(unittest.TestCase, Line 507  class SaveSessionTest(unittest.TestCase,
507          class NonConnectionStore(PostGISShapeStore):          class NonConnectionStore(PostGISShapeStore):
508              """Shapestore that doesn't try to access the server"""              """Shapestore that doesn't try to access the server"""
509              def _fetch_table_information(self):              def _fetch_table_information(self):
510                  pass                  # pretend that we've found a geometry column
511                    self.geometry_column = "the_geom"
512                def IDColumn(self):
513                    """Return an object with a name attribute with value 'gid'"""
514                    class dummycol:
515                        name = "gid"
516                    return dummycol
517    
518          session = Session("A PostGIS Session")          session = Session("A PostGIS Session")
519          try:          try:
# Line 511  class SaveSessionTest(unittest.TestCase, Line 536  class SaveSessionTest(unittest.TestCase,
536              written = file.read()              written = file.read()
537              file.close()              file.close()
538              expected = '''<?xml version="1.0" encoding="UTF-8"?>              expected = '''<?xml version="1.0" encoding="UTF-8"?>
539              <!DOCTYPE session SYSTEM "thuban-0.9.dtd">              <!DOCTYPE session SYSTEM "thuban-1.1.dtd">
540              <session title="A PostGIS Session"              <session title="A PostGIS Session"
541               xmlns="http://thuban.intevation.org/dtds/thuban-0.9.dtd">               xmlns="http://thuban.intevation.org/dtds/thuban-1.1-dev.dtd">
542                  <dbconnection id="DB"                  <dbconnection id="DB"
543                                dbtype="postgis" dbname="plugh"                                dbtype="postgis" dbname="plugh"
544                                host="xyzzy" port="42"                                host="xyzzy" port="42"
545                                user="grue"/>                                user="grue"/>
546                  <dbshapesource id="roads" dbconn="DB" tablename="roads"/>                  <dbshapesource id="roads" dbconn="DB" tablename="roads"
547                                   id_column="gid" geometry_column="the_geom"/>
548                  <map title="Test Map">                  <map title="Test Map">
549                      <layer title="Roads to Nowhere"                      <layer title="Roads to Nowhere"
550                             shapestore="roads" visible="true"                             shapestore="roads" visible="true"

Legend:
Removed from v.1678  
changed lines
  Added in v.2621

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26