Skip to content

Commit 2f5c3a5

Browse files
committedMay 23, 2016
[processing] fix expressions handling in ParameterString (fix #14834)
Add initial set of tests for ParameterString
1 parent 9074b14 commit 2f5c3a5

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed
 

‎python/plugins/processing/core/parameters.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,9 +709,10 @@ class ParameterString(Parameter):
709709
ESCAPED_NEWLINE = '\\n'
710710

711711
def __init__(self, name='', description='', default=None, multiline=False,
712-
optional=False):
712+
optional=False, evaluateExpressions=False):
713713
Parameter.__init__(self, name, description, default, optional)
714714
self.multiline = parseBool(multiline)
715+
self.evaluateExpressions = parseBool(evaluateExpressions)
715716

716717
def setValue(self, obj):
717718
if obj is None:

‎python/plugins/processing/gui/AlgorithmDialog.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,14 +169,16 @@ def setParamValue(self, param, widget, alg=None):
169169
return param.setValue(widget.getValue())
170170
elif isinstance(param, ParameterString):
171171
if param.multiline:
172-
return param.setValue(unicode(widget.toPlainText()))
172+
text = unicode(widget.toPlainText())
173173
else:
174174
text = widget.text()
175+
176+
if param.evaluateExpressions:
175177
try:
176178
text = self.evaluateExpression(text)
177179
except:
178180
pass
179-
return param.setValue(text)
181+
return param.setValue(text)
180182
elif isinstance(param, ParameterGeometryPredicate):
181183
return param.setValue(widget.value())
182184
else:

‎python/plugins/processing/tests/ParametersTest.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
ParameterFixedTable,
3737
ParameterMultipleInput,
3838
ParameterNumber,
39-
ParameterPoint)
39+
ParameterPoint,
40+
ParameterString)
4041

4142
from qgis.core import (QgsRasterLayer,
4243
QgsVectorLayer)
@@ -394,5 +395,28 @@ def testOptional(self):
394395
self.assertEqual(requiredParameter.value, 5)
395396

396397

398+
class ParameterStringTest(unittest.TestCase):
399+
400+
def testSetValue(self):
401+
parameter = ParameterString('myName', 'myDescription')
402+
self.assertTrue(parameter.setValue('test'))
403+
self.assertEqual(parameter.value, 'test')
404+
405+
def testOptional(self):
406+
optionalParameter = ParameterString('myName', 'myDesc', default='test', optional=True)
407+
self.assertEqual(optionalParameter.value, 'test')
408+
optionalParameter.setValue('check')
409+
self.assertEqual(optionalParameter.value, 'check')
410+
self.assertTrue(optionalParameter.setValue(None))
411+
self.assertEqual(optionalParameter.value, None)
412+
413+
requiredParameter = ParameterCrs('myName', 'myDesc', default='test', optional=False)
414+
self.assertEqual(requiredParameter.value, 'test')
415+
requiredParameter.setValue('check')
416+
self.assertEqual(requiredParameter.value, 'check')
417+
self.assertFalse(requiredParameter.setValue(None))
418+
self.assertEqual(requiredParameter.value, 'check')
419+
420+
397421
if __name__ == '__main__':
398422
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.