Commit d7c2e865 by dark-lbp Committed by Marcin Bury

Make OptInteger handle value 0 and hex value. (#613)

parent 47183c74
......@@ -20,7 +20,7 @@ class Option(object):
except ValueError:
raise OptionValidationError("Invalid value. Cannot cast '{}' to boolean.".format(advanced))
if default:
if default or default == 0:
self.__set__("", default)
else:
self.display_value = ""
......@@ -93,7 +93,10 @@ class OptInteger(Option):
self.display_value = str(value)
self.value = int(value)
except ValueError:
raise OptionValidationError("Invalid option. Cannot cast '{}' to integer.".format(value))
try:
self.value = int(value, 16)
except ValueError:
raise OptionValidationError("Invalid option. Cannot cast '{}' to integer.".format(value))
class OptFloat(Option):
......
......@@ -118,6 +118,18 @@ def test_opt_integer():
assert opt_integer.value == 9999999
assert opt_integer.__get__(None, None) == 9999999
# Test OptInteger setting to 0
opt_integer = OptInteger(0, "Test Integer with 0")
assert opt_integer.display_value == "0"
assert opt_integer.value == 0
assert opt_integer.__get__(None, None) == 0
# Test OptInteger setting to 0x100
opt_integer.__set__(None, "0x100")
assert opt_integer.display_value == "0x100"
assert opt_integer.value == 0x100
assert opt_integer.__get__(None, None) == 0x100
# Test OptInteget setting to invalid value
try:
opt_integer.__set__(None, "Invalid Value")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment