diff --git a/python/plugins/processing/core/parameters.py b/python/plugins/processing/core/parameters.py index 402ebaa237e9..75621a1cc05a 100644 --- a/python/plugins/processing/core/parameters.py +++ b/python/plugins/processing/core/parameters.py @@ -446,9 +446,9 @@ def __init__(self, name='', description='', minValue=None, maxValue=None, if default is not None: try: - self.default = int(float(default)) + self.default = int(unicode(default)) self.isInteger = True - except: + except ValueError: self.default = float(default) self.isInteger = False else: diff --git a/python/plugins/processing/tests/ParametersTest.py b/python/plugins/processing/tests/ParametersTest.py index 19da4f2aa598..883ec7cd84fa 100644 --- a/python/plugins/processing/tests/ParametersTest.py +++ b/python/plugins/processing/tests/ParametersTest.py @@ -308,6 +308,16 @@ def testSetValueOnlyValidNumbers(self): self.assertFalse(parameter.setValue('not a number')) self.assertEqual(parameter.value, None) + def testIsInteger(self): + floatParameter = ParameterNumber('myname', 'myDescription', default=1.0) + self.assertFalse(floatParameter.isInteger) + intParameter = ParameterNumber('myname', 'myDescription', default=10) + self.assertTrue(intParameter.isInteger) + strFloatParameter = ParameterNumber('myname', 'myDescription', default="1.0") + self.assertFalse(strFloatParameter.isInteger) + strIntParameter = ParameterNumber('myname', 'myDescription', default="10") + self.assertTrue(strIntParameter.isInteger) + def testMaxValue(self): parameter = ParameterNumber('myName', 'myDescription', maxValue=10) self.assertFalse(parameter.setValue(11))