Skip to content

Commit 5d19a3b

Browse files
author
Médéric RIBREUX
committed
[Processing] Fix ParameterNumber float detection (with unit tests)
1 parent d11c689 commit 5d19a3b

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

python/plugins/processing/core/parameters.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -446,9 +446,9 @@ def __init__(self, name='', description='', minValue=None, maxValue=None,
446446

447447
if default is not None:
448448
try:
449-
self.default = int(float(default))
449+
self.default = int(unicode(default))
450450
self.isInteger = True
451-
except:
451+
except ValueError:
452452
self.default = float(default)
453453
self.isInteger = False
454454
else:

python/plugins/processing/tests/ParametersTest.py

+10
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,16 @@ def testSetValueOnlyValidNumbers(self):
308308
self.assertFalse(parameter.setValue('not a number'))
309309
self.assertEqual(parameter.value, None)
310310

311+
def testIsInteger(self):
312+
floatParameter = ParameterNumber('myname', 'myDescription', default=1.0)
313+
self.assertFalse(floatParameter.isInteger)
314+
intParameter = ParameterNumber('myname', 'myDescription', default=10)
315+
self.assertTrue(intParameter.isInteger)
316+
strFloatParameter = ParameterNumber('myname', 'myDescription', default="1.0")
317+
self.assertFalse(strFloatParameter.isInteger)
318+
strIntParameter = ParameterNumber('myname', 'myDescription', default="10")
319+
self.assertTrue(strIntParameter.isInteger)
320+
311321
def testMaxValue(self):
312322
parameter = ParameterNumber('myName', 'myDescription', maxValue=10)
313323
self.assertFalse(parameter.setValue(11))

0 commit comments

Comments
 (0)