Skip to content

Commit

Permalink
Merge pull request #116 from janezd/random-convert-double
Browse files Browse the repository at this point in the history
Random Data: Improve parsing of decimal values
  • Loading branch information
ajdapretnar committed Aug 3, 2021
2 parents 9bf8395 + 78d24be commit 88ce1af
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 3 deletions.
15 changes: 12 additions & 3 deletions orangecontrib/educational/widgets/owrandomdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,25 @@ class pos_int(int): # pylint: disable=invalid-name
validator = QIntValidator()


class any_float(float): # pylint: disable=invalid-name
class float_convert(float): # pylint: disable=invalid-name
@staticmethod
def convert(s):
s = s.replace(",", ".")
if s.endswith("."):
s += "0"
return float(s)


class any_float(float_convert): # pylint: disable=invalid-name
validator = QDoubleValidator()


class pos_float(float): # pylint: disable=invalid-name
class pos_float(float_convert): # pylint: disable=invalid-name
validator = QDoubleValidator()
validator.setBottom(0.0001)


class prob_float(float): # pylint: disable=invalid-name
class prob_float(float_convert): # pylint: disable=invalid-name
validator = QDoubleValidator(0, 1, 5)


Expand Down
24 changes: 24 additions & 0 deletions orangecontrib/educational/widgets/tests/test_owrandomdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,30 @@ def test_get_parameters(self):
e = MockEditorEmpty()
self.assertEqual(e.get_parameters(), {})

def test_parameters_conversion(self):
e = MockEditor()
parameters = {p.arg_name: p.default for p in MockEditor.parameters}

e.edits["f"].setText("6.28")
parameters["f"] = 6.28
self.assertEqual(e.get_parameters(), parameters)

e.edits["f"].setText("5,17")
parameters["f"] = 5.17
self.assertEqual(e.get_parameters(), parameters)

e.edits["f"].setText("4,")
parameters["f"] = 4
self.assertEqual(e.get_parameters(), parameters)

e.edits["f"].setText("3.")
parameters["f"] = 3
self.assertEqual(e.get_parameters(), parameters)

e.edits["f"].setText("2")
parameters["f"] = 2
self.assertEqual(e.get_parameters(), parameters)

def test_set_erorr(self):
e = MockEditor()
self.assertTrue(e.error.isHidden())
Expand Down

0 comments on commit 88ce1af

Please sign in to comment.