[mapserver-commits] r7205 - in trunk/mapserver/mapscript/python: .
tests/cases
svn at osgeo.org
svn at osgeo.org
Sat Dec 22 04:14:02 EST 2007
Author: unicoletti
Date: 2007-12-22 04:13:59 -0500 (Sat, 22 Dec 2007)
New Revision: 7205
Added:
trunk/mapserver/mapscript/python/tests/cases/parentreference.py
Modified:
trunk/mapserver/mapscript/python/pymodule.i
trunk/mapserver/mapscript/python/tests/cases/refcount.py
Log:
#2442: implementation of RFC24, item 3.2
Modified: trunk/mapserver/mapscript/python/pymodule.i
===================================================================
--- trunk/mapserver/mapscript/python/pymodule.i 2007-12-21 22:48:08 UTC (rev 7204)
+++ trunk/mapserver/mapscript/python/pymodule.i 2007-12-22 09:13:59 UTC (rev 7205)
@@ -156,5 +156,55 @@
MapServerChildError = _mapscript.MapServerChildError
%}
+%feature("pythonappend") layerObj %{if args and len(args)!=0:
+ self.p_map=args[0]
+ else:
+ self.p_map=None%}
+%feature("pythonappend") classObj %{if args and len(args)!=0:
+ self.p_layer=args[0]
+ else:
+ self.p_layer=None%}
+%feature("shadow") insertClass %{
+ def insertClass(*args):
+ actualIndex=$action(*args)
+ args[1].p_layer=args[0]
+ return actualIndex%}
+
+%feature("shadow") getClass %{
+ def getClass(*args):
+ clazz = $action(*args)
+ if clazz:
+ if args and len(args)!=0:
+ clazz.p_layer=args[0]
+ else:
+ clazz.p_layer=None
+ return clazz%}
+
+%feature("shadow") insertLayer %{
+ def insertLayer(*args):
+ actualIndex=$action(*args)
+ args[1].p_map=args[0]
+ return actualIndex%}
+
+%feature("shadow") getLayer %{
+ def getLayer(*args):
+ layer = $action(*args)
+ if layer:
+ if args and len(args)!=0:
+ layer.p_map=args[0]
+ else:
+ layer.p_map=None
+ return layer%}
+
+%feature("shadow") getLayerByName %{
+ def getLayerByName(*args):
+ layer = $action(*args)
+ if layer:
+ if args and len(args)!=0:
+ layer.p_map=args[0]
+ else:
+ layer.p_map=None
+ return layer%}
+
Added: trunk/mapserver/mapscript/python/tests/cases/parentreference.py
===================================================================
--- trunk/mapserver/mapscript/python/tests/cases/parentreference.py (rev 0)
+++ trunk/mapserver/mapscript/python/tests/cases/parentreference.py 2007-12-22 09:13:59 UTC (rev 7205)
@@ -0,0 +1,131 @@
+# $Id: refcount.py 6521 2007-08-08 20:39:17Z hobu $
+#
+# Project: MapServer
+# Purpose: xUnit style Python mapscript tests of Map
+# Author: Umberto Nicoletti, unicoletti at prometeo.it
+#
+# ===========================================================================
+# Copyright (c) 2004, Sean Gillies
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+# ===========================================================================
+#
+# Execute this module as a script from mapserver/mapscript/python
+#
+# python tests/cases/refcount.py -v
+#
+# ===========================================================================
+
+import os, sys, gc
+import unittest
+
+# the testing module helps us import the pre-installed mapscript
+from testing import mapscript, MapTestCase, TESTMAPFILE
+
+# ===========================================================================
+# Test begins now
+
+class ParentReferenceTestCase(unittest.TestCase):
+
+ def initMap(self):
+ self.map=mapscript.mapObj(TESTMAPFILE)
+
+ def testGetLayerObj(self):
+ self.initMap()
+ layer = self.map.getLayer(1)
+ self.map=None
+ assert str(layer.p_map).find('mapscript.mapObj') != -1
+ gc.collect()
+ assert layer.map != None, layer.map
+
+ def testGetLayerObjByName(self):
+ self.initMap()
+ layer = self.map.getLayerByName('POLYGON')
+ self.map=None
+ assert str(layer.p_map).find('mapscript.mapObj') != -1
+ gc.collect()
+ assert layer.map != None, layer.map
+
+ def testLayerObj(self):
+ self.initMap()
+ layer = mapscript.layerObj(self.map)
+ self.map=None
+ assert str(layer.p_map).find('mapscript.mapObj') != -1
+ gc.collect()
+ assert layer.map != None, layer.map
+
+ def testInsertLayerObj(self):
+ self.initMap()
+ layer = mapscript.layerObj()
+ self.map.insertLayer(layer)
+ self.map=None
+ assert str(layer.p_map).find('mapscript.mapObj') != -1
+ gc.collect()
+ assert layer.map != None, layer.map
+
+ def testGetClassObj(self):
+ self.initMap()
+ layer = self.map.getLayer(1)
+ clazz = layer.getClass(0)
+ self.map=None
+ layer=None
+ assert str(clazz.p_layer).find('mapscript.layerObj') != -1
+ gc.collect()
+ assert clazz.layer != None, clazz.layer
+
+ def testClassObj(self):
+ self.initMap()
+ layer = mapscript.layerObj(self.map)
+ clazz = mapscript.classObj(layer)
+ self.map=None
+ layer=None
+ assert str(clazz.p_layer).find('mapscript.layerObj') != -1
+ gc.collect()
+ assert clazz.layer != None, clazz.layer
+
+ def testInsertClassObj(self):
+ self.initMap()
+ layer = mapscript.layerObj()
+ clazz = mapscript.classObj()
+ layer.insertClass(clazz)
+ self.map=None
+ layer=None
+ assert str(clazz.p_layer).find('mapscript.layerObj') != -1
+ gc.collect()
+ assert clazz.layer != None, clazz.layer
+
+ def testRemoveClassObj(self):
+ self.initMap()
+ layer = self.map.getLayer(1)
+ clazz = layer.removeClass(0)
+ if hasattr(clazz,'p_layer'):
+ assert clazz.p_layer == None, clazz.p_layer
+ assert clazz.layer == None, clazz.layer
+ self.initMap()
+ position=self.map.getLayer(0).insertClass(clazz)
+ assert position==0, position
+ assert clazz.p_layer != None, clazz.p_layer
+ assert clazz.layer != None, clazz.layer
+
+# ===========================================================================
+# Run the tests outside of the main suite
+
+if __name__ == '__main__':
+ unittest.main()
+
Modified: trunk/mapserver/mapscript/python/tests/cases/refcount.py
===================================================================
--- trunk/mapserver/mapscript/python/tests/cases/refcount.py 2007-12-21 22:48:08 UTC (rev 7204)
+++ trunk/mapserver/mapscript/python/tests/cases/refcount.py 2007-12-22 09:13:59 UTC (rev 7205)
@@ -139,11 +139,12 @@
index = self.map.insertLayer(layer,0)
assert index == 0, index
self.map=None
- assert layer.map == None, layer.map
+ assert layer.map != None, layer.map
exception=None
try:
layer.open()
except:
+ # must fail because the new layer is missing information
assert True
exception=True
if not exception:
More information about the mapserver-commits
mailing list