Skip to content

Commit 08aaa2b

Browse files
author
cpolymeris@gmail.com
committedJul 3, 2012
Some basic algorithm running tests.
git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@280 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
1 parent 9ceb1cc commit 08aaa2b

File tree

5 files changed

+63
-19
lines changed

5 files changed

+63
-19
lines changed
 

‎src/sextante/core/Sextante.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,3 @@ def cancel():
387387
else:
388388
if UnthreadedAlgorithmExecutor.runalg(alg, SilentProgress()):
389389
SextantePostprocessing.handleAlgorithmResults(alg)
390-
391-
392-
393-
394-

‎src/sextante/gui/AlgorithmExecutor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
class AlgorithmExecutor(QThread):
99
percentageChanged = pyqtSignal(int)
1010
textChanged = pyqtSignal(QString)
11-
error = pyqtSignal()
11+
error = pyqtSignal(str)
1212
iterated = pyqtSignal(int)
1313
#started & finished inherited from QThread
1414

‎src/sextante/tests/qgis_interface.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,6 @@ def mainWindow(self):
9292
def addDockWidget(self, area, dockwidget):
9393
""" Add a dock widget to the main window """
9494
pass
95+
96+
def legendInterface(self):
97+
return type('FakeLInterface', (), {'layers' : list})()

‎src/sextante/tests/runtests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
PYTHONPATH=~/.qgis/python/plugins/:~/Proyectos/qgis/output/python/:~/Proyectos/qgis/python/plugins/ python test.py
1+
PYTHONPATH=~/Proyectos/qgis/output/python/:~/Proyectos/qgis/python/plugins/ python test.py

‎src/sextante/tests/test.py

Lines changed: 58 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,31 +28,77 @@
2828
sys.path.append('/usr/share/qgis/python/plugins')
2929

3030
from qgis.gui import QgsMapCanvas
31+
from qgis.core import *
3132
from qgis_interface import QgisInterface
3233
from PyQt4.QtGui import QWidget
3334
from utilities_test import getQgisTestApp
3435
#from gui.is_plugin import ISPlugin
35-
from sextante import SextantePlugin
36+
from sextante.SextantePlugin import SextantePlugin
3637
from sextante.core.Sextante import Sextante
38+
from sextante.parameters.ParameterRaster import ParameterRaster
39+
from sextante.parameters.ParameterVector import ParameterVector
40+
from sextante.parameters.ParameterNumber import ParameterNumber
41+
from sextante.outputs.OutputRaster import OutputRaster
42+
from sextante.outputs.OutputVector import OutputVector
3743
QGISAPP, CANVAS, IFACE, PARENT = getQgisTestApp()
3844

45+
class DataProviderStub:
46+
def __init__(self, uri):
47+
self.dataSourceUri = lambda: uri
3948

4049
class SextantePluginTest(unittest.TestCase):
4150
"""Test suite for Sextante QGis plugin"""
42-
43-
def test_createplugin(self):
51+
def gen_test_parameters(self, alg):
52+
for p in alg.parameters:
53+
if isinstance(p, ParameterRaster):
54+
l = QgsRasterLayer('.data/raster', "test raster")
55+
l.dataProvider = lambda: DataProviderStub('data/raster')
56+
yield l
57+
elif isinstance(p, ParameterVector):
58+
l = QgsVectorLayer('.data/vector', "test vector")
59+
l.dataProvider = lambda: DataProviderStub('data/vector')
60+
yield l
61+
elif isinstance(p, ParameterNumber):
62+
yield p.max
63+
else:
64+
yield
65+
i = 0;
66+
for o in alg.outputs:
67+
if o.hidden:
68+
continue;
69+
i = i + 1
70+
if isinstance(o, OutputRaster):
71+
yield 'output%i.tif' % i
72+
elif isinstance(o, OutputVector):
73+
yield 'output%i.shp' % i
74+
else:
75+
yield
76+
77+
def test_0createplugin(self):
4478
"""Initialize plugin"""
45-
sextanteplugin = SextantePlugin(IFACE)
46-
assert sextanteplugin != None, "Unable to create plugin"
79+
self.sextanteplugin = SextantePlugin(IFACE)
80+
self.assertIsNotNone(self.sextanteplugin)
4781

48-
def test_sextante_alglist(self):
82+
def test_1sextante_alglist(self):
4983
"""Test alglist"""
50-
sextanteplugin = SextantePlugin(IFACE)
51-
algs = Sextante.algs.values()
52-
for provider in Sextante.algs.values():
53-
for algo in provider.values():
54-
print algo.commandLineName()
55-
assert algs, "Algo list is empty"
84+
self.sextanteplugin = SextantePlugin(IFACE)
85+
self.providerToAlgs = Sextante.algs
86+
self.assertTrue(self.providerToAlgs, "Alg list")
87+
88+
def test_runalg(self):
89+
self.sextanteplugin = SextantePlugin(IFACE)
90+
self.providerToAlgs = Sextante.algs
91+
for provider, algs in self.providerToAlgs.items():
92+
if not algs.items():
93+
print "WARINING: %s seems to provide no algs!" % provider
94+
continue
95+
algId, alg = algs.items()[-1]
96+
args = list(self.gen_test_parameters(alg))
97+
print "Alg: ", algId
98+
print alg.parameters, ' => ', args
99+
result = Sextante.runalg(algId, *args)
100+
self.assertIsNotNone(result, "Running directly %s" % algId)
101+
print algId, " ok."
56102

57103
if __name__ == '__main__':
58104
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.