Skip to content

Commit 72037dc

Browse files
committedMar 27, 2013
[sextante] more tests
1 parent 91fa062 commit 72037dc

File tree

6 files changed

+363
-75
lines changed

6 files changed

+363
-75
lines changed
 

‎python/plugins/sextante/algs/AutoincrementalField.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def processAlgorithm(self, progress):
4545
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(self.INPUT))
4646
vprovider = vlayer.dataProvider()
4747
fields = vprovider.fields()
48-
fields[len(fields)] = QgsField("AUTO", QVariant.Int)
48+
fields.append(QgsField("AUTO", QVariant.Int))
4949
writer = output.getVectorWriter(fields, vprovider.geometryType(), vlayer.crs() )
5050
inFeat = QgsFeature()
5151
outFeat = QgsFeature()
@@ -58,10 +58,10 @@ def processAlgorithm(self, progress):
5858
nElement += 1
5959
inGeom = inFeat.geometry()
6060
outFeat.setGeometry( inGeom )
61-
atMap = inFeat.attributeMap()
62-
atMap.append(QVariant(nElement))
63-
outFeat.setAttributeMap( atMap )
64-
writer.addFeature( outFeat )
61+
attrs = inFeat.attributes()
62+
attrs.append(QVariant(nElement))
63+
outFeat.setAttributes(attrs)
64+
writer.addFeature(outFeat)
6565
del writer
6666

6767
def defineCharacteristics(self):

‎python/plugins/sextante/algs/ftools/Dissolve.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ def processAlgorithm(self, progress):
5656
vproviderA = vlayerA.dataProvider()
5757
fields = vproviderA.fields()
5858
writer = self.getOutputFromName(Dissolve.OUTPUT).getVectorWriter(fields, vproviderA.geometryType(), vproviderA.crs() )
59-
#inFeat = QgsFeature()
6059
outFeat = QgsFeature()
6160
nElement = 0
6261
nFeat = vproviderA.featureCount()

‎python/plugins/sextante/script/ScriptAlgorithm.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,10 @@ def processAlgorithm(self, progress):
204204
ns['progress'] = progress
205205

206206
for param in self.parameters:
207-
#script += param.name + "=" + param.getValueAsCommandLineParameter() + "\n"
208207
ns[param.name] = param.value
209208

210209
for out in self.outputs:
211210
ns[out.name] = out.value
212-
#script += out.name + "=" + out.getValueAsCommandLineParameter() + "\n"
213211

214212
script+=self.script
215213
exec(script) in ns

‎python/plugins/sextante/tests/AlgTests.py renamed to ‎python/plugins/sextante/tests/QgisAlgsTest.py

Lines changed: 235 additions & 67 deletions
Large diffs are not rendered by default.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import sextante
2+
import unittest
3+
from sextante.tests.TestData import points, points2, polygons, polygons2, lines, union,\
4+
table
5+
from sextante.core.QGisLayers import QGisLayers
6+
from sextante.core.SextanteUtils import SextanteUtils
7+
8+
class ParametrizedTestCase(unittest.TestCase):
9+
10+
def __init__(self, methodName='runTest', useTempFiles=False):
11+
super(ParametrizedTestCase, self).__init__(methodName)
12+
self.useTempFiles = useTempFiles
13+
14+
@staticmethod
15+
def parametrize(testcase_klass, useTempFiles):
16+
testloader = unittest.TestLoader()
17+
testnames = testloader.getTestCaseNames(testcase_klass)
18+
suite = unittest.TestSuite()
19+
for name in testnames:
20+
suite.addTest(testcase_klass(name, useTempFiles=useTempFiles))
21+
return suite
22+
23+
class RunAlgTest(ParametrizedTestCase):
24+
'''This test takes a reduced set of algorithms and executes them in different ways, changing
25+
parameters such as whether to use thread or not, the output file format, etc.
26+
Basically, it uses some algorithms to test other parts of SEXTANTE, not the algorithms themselves'''
27+
28+
def getOutputFile(self):
29+
if self.useTempFiles:
30+
return None
31+
else:
32+
return SextanteUtils.getTempFilename('shp')
33+
34+
def test_qgiscountpointsinpolygon(self):
35+
outputs=sextante.runalg("qgis:countpointsinpolygon",polygons(),points(),"NUMPOINTS", self.getOutputFile())
36+
output=outputs['OUTPUT']
37+
layer=QGisLayers.getObjectFromUri(output, True)
38+
fields=layer.pendingFields()
39+
expectednames=['ID','POLY_NUM_A','POLY_ST_A','NUMPOINTS']
40+
expectedtypes=['Integer','Real','String','Real']
41+
names=[str(f.name()) for f in fields]
42+
types=[str(f.typeName()) for f in fields]
43+
self.assertEqual(expectednames, names)
44+
self.assertEqual(expectedtypes, types)
45+
features=sextante.getfeatures(layer)
46+
self.assertEqual(2, len(features))
47+
feature=features.next()
48+
attrs=feature.attributes()
49+
expectedvalues=["1","1.1","string a","6"]
50+
values=[str(attr.toString()) for attr in attrs]
51+
self.assertEqual(expectedvalues, values)
52+
53+
def suite():
54+
suite = unittest.TestSuite()
55+
suite.addTest(ParametrizedTestCase.parametrize(RunAlgTest, False))
56+
suite.addTest(ParametrizedTestCase.parametrize(RunAlgTest, True))
57+
return suite
58+
59+
def runtests():
60+
result = unittest.TestResult()
61+
testsuite = suite()
62+
testsuite.run(result)
63+
return result
64+
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import sextante
2+
import unittest
3+
from sextante.tests.TestData import points, points2, polygons, polygons2, lines, union,\
4+
table
5+
from sextante.core.QGisLayers import QGisLayers
6+
7+
class ScriptTest(unittest.TestCase):
8+
9+
def test_scriptcreatetilingfromvectorlayer(self):
10+
outputs=sextante.runalg("script:createtilingfromvectorlayer",union(),10,None)
11+
output=outputs['polygons']
12+
layer=QGisLayers.getObjectFromUri(output, True)
13+
fields=layer.pendingFields()
14+
expectednames=['longitude','latitude']
15+
expectedtypes=['Real','Real']
16+
names=[str(f.name()) for f in fields]
17+
types=[str(f.typeName()) for f in fields]
18+
self.assertEqual(expectednames, names)
19+
self.assertEqual(expectedtypes, types)
20+
features=sextante.getfeatures(layer)
21+
self.assertEqual(10, len(features))
22+
feature=features.next()
23+
attrs=feature.attributes()
24+
expectedvalues=["270761.415396242","4458948.29588823"]
25+
values=[str(attr.toString()) for attr in attrs]
26+
self.assertEqual(expectedvalues, values)
27+
wkt='POLYGON((270755.54427424 4458901.23378639,270755.54427424 4458995.35799007,270767.28651824 4458995.35799007,270767.28651824 4458901.23378639,270755.54427424 4458901.23378639))'
28+
self.assertEqual(wkt, str(feature.geometry().exportToWkt()))
29+
30+
def test_scripthexgridfromlayerbounds(self):
31+
outputs=sextante.runalg("script:hexgridfromlayerbounds",polygons(),10,None)
32+
output=outputs['grid']
33+
layer=QGisLayers.getObjectFromUri(output, True)
34+
fields=layer.pendingFields()
35+
expectednames=['longitude','latitude']
36+
expectedtypes=['Real','Real']
37+
names=[str(f.name()) for f in fields]
38+
types=[str(f.typeName()) for f in fields]
39+
self.assertEqual(expectednames, names)
40+
self.assertEqual(expectedtypes, types)
41+
features=sextante.getfeatures(layer)
42+
self.assertEqual(117, len(features))
43+
feature=features.next()
44+
attrs=feature.attributes()
45+
expectedvalues=["270765.621834001","4458907.27146471"]
46+
values=[str(attr.toString()) for attr in attrs]
47+
self.assertEqual(expectedvalues, values)
48+
wkt='POLYGON((270771.39533669 4458907.27146471,270768.50858535 4458902.27146471,270762.73508265 4458902.27146471,270759.84833131 4458907.27146471,270762.73508265 4458912.27146471,270768.50858535 4458912.27146471,270771.39533669 4458907.27146471))'
49+
self.assertEqual(wkt, str(feature.geometry().exportToWkt()))
50+
51+
def suite():
52+
suite = unittest.makeSuite(ScriptTest, 'test')
53+
return suite
54+
55+
def runtests():
56+
result = unittest.TestResult()
57+
testsuite = suite()
58+
testsuite.run(result)
59+
return result

0 commit comments

Comments
 (0)
Please sign in to comment.