Commit d12f21d6 authored by mvdbeek's avatar mvdbeek
Browse files

Add test for unset optional parameters

parent c45103e6
Loading
Loading
Loading
Loading
+17 −9
Original line number Diff line number Diff line
@@ -108,15 +108,19 @@ def test_raw_object_wrapper():
    assert not false_wrapper


def valuewrapper(tool, value, paramtype):
def valuewrapper(tool, value, paramtype, optional=False):
    if paramtype == "integer":
        parameter = IntegerToolParameter(tool, XML('<param name="blah" type="integer" value="10" min="0" />'))
        optional = 'optional="true"' if optional else 'value="10"'
        parameter = IntegerToolParameter(tool, XML('<param name="blah" type="integer" %s min="0" />' % optional))
    elif paramtype == "text":
        parameter = TextToolParameter(tool, XML('<param name="blah" type="text" value="foo"/>'))
        optional = 'optional="true"' if optional else 'value="foo"'
        parameter = TextToolParameter(tool, XML('<param name="blah" type="text" %s/>' % optional))
    elif paramtype == "float":
        parameter = FloatToolParameter(tool, XML('<param name="blah" type="float" value="10.0"/>'))
        optional = 'optional="true"' if optional else 'value="10.0"'
        parameter = FloatToolParameter(tool, XML('<param name="blah" type="float" %s/>' % optional))
    elif paramtype == "boolean":
        parameter = BooleanToolParameter(tool, XML('<param name="blah" type="boolean" truevalue="truevalue" falsevalue="falsevalue"/>'))
        optional = 'optional="true"' if optional else 'value=""'
        parameter = BooleanToolParameter(tool, XML('<param name="blah" type="boolean" truevalue="truevalue" falsevalue="falsevalue" %s/>' % optional))
    return InputValueWrapper(parameter, value)


@@ -143,19 +147,23 @@ def test_input_value_wrapper_comparison(tool):

@with_mock_tool
def test_input_value_wrapper_comparison_optional(tool):
    parameter = IntegerToolParameter(tool, XML('<param name="blah" type="integer" min="0" optional="true"/>'))
    wrapper = InputValueWrapper(parameter, None)
    wrapper = valuewrapper(tool, None, 'integer', optional=True)
    assert not wrapper
    with pytest.raises(ValueError):
        int(wrapper)
    assert str(wrapper) == ""
    assert wrapper == ""  # for backward-compatibility
    parameter = IntegerToolParameter(tool, XML('<param name="blah" type="integer" min="0" optional="true"/>'))
    wrapper = InputValueWrapper(parameter, 0)
    wrapper = valuewrapper(tool, 0, 'integer', optional=True)
    assert wrapper == 0
    assert int(wrapper) == 0
    assert str(wrapper)
    assert wrapper != ""  # for backward-compatibility, the correct way to check if an optional integer param is not empty is to use str(wrapper)
    wrapper = valuewrapper(tool, None, 'integer', optional=True)
    assert wrapper != 1
    assert str(wrapper) == ""
    wrapper = valuewrapper(tool, None, "boolean")
    assert bool(wrapper) is False, wrapper
    assert str(wrapper) == 'falsevalue'


@with_mock_tool