Exemple #1
0
def test_user_parameter_validation_allowed():
    p = local.UserParameter('a', 'a desc', 'int', 1, allowed=[1, 2])

    with pytest.raises(ValueError) as except_info:
        p.validate(0)
    assert 'allowed' in str(except_info.value)

    assert p.validate(1) == 1
    assert p.validate(2) == 2

    with pytest.raises(ValueError) as except_info:
        p.validate(3)
    assert 'allowed' in str(except_info.value)
Exemple #2
0
def test_user_parameter_validation_range():
    p = local.UserParameter('a', 'a desc', 'int', 1, min=0, max=3)

    with pytest.raises(ValueError) as except_info:
        p.validate(-1)
    assert 'less than' in str(except_info.value)

    assert p.validate(0) == 0
    assert p.validate(1) == 1
    assert p.validate(2) == 2
    assert p.validate(3) == 3

    with pytest.raises(ValueError) as except_info:
        p.validate(4)
    assert 'greater than' in str(except_info.value)
Exemple #3
0
def test_user_pars_mlist():
    # second case: allowed are not lists, can choose any number of them
    # NB: repeats are allowed
    p = local.UserParameter("", "", "mlist", allowed=["one", "two", "three"])
    with pytest.raises(TypeError):
        p.validate(0)
    with pytest.raises((TypeError, ValueError)):
        # unfortunately, a string does coerce to a list
        p.validate("one")
    with pytest.raises(ValueError, match="allowed"):
        p.validate(["two", "other"])
    p.validate(["two"])
    p.validate(["two", "two"])
    p.validate(["two", "one"])
    p.validate([])
Exemple #4
0
def test_user_pars_list():
    # first case: allowed are all lists, must choose exactly one of them
    # NB: order must match
    p = local.UserParameter("",
                            "",
                            "list",
                            allowed=[[], ["one"], ["one", "two"]])
    with pytest.raises(TypeError):
        p.validate(0)
    with pytest.raises((TypeError, ValueError)):
        # unfortunately, a string does coerce to a list
        p.validate("one")
    with pytest.raises(ValueError, match="allowed"):
        p.validate(["two"])
    with pytest.raises(ValueError, match="allowed"):
        p.validate(["two", "one"])
    p.validate(["one"])
    p.validate(["one", "two"])
Exemple #5
0
def test_user_parameter_coerce_allowed(dtype, given, expected):
    p = local.UserParameter('a', 'a desc', dtype, expected[0], allowed=given)
    assert p.allowed == expected
Exemple #6
0
def test_user_parameter_coerce_max(dtype, given, expected):
    p = local.UserParameter('a', 'a desc', dtype, expected, max=given)
    assert p.max == expected
Exemple #7
0
def test_user_parameter_coerce_special_datetime(given):
    p = local.UserParameter('a', 'a desc', 'datetime', given)
    assert type(p.validate(given)) == pandas.Timestamp
Exemple #8
0
def test_user_parameter_coerce_value(dtype, given, expected):
    p = local.UserParameter('a', 'a desc', dtype, given)
    assert p.validate(given) == expected
Exemple #9
0
def test_user_parameter_repr():
    p = local.UserParameter('a', 'a desc', 'str')
    expected = "<UserParameter 'a'>"
    assert repr(p) == str(p) == expected
Exemple #10
0
def test_user_parameter_default_value(dtype, expected):
    p = local.UserParameter('a', 'a desc', dtype)
    assert p.validate(None) == expected
Exemple #11
0
def test_user_parameter_str_method():
    p = local.UserParameter('a', 'a desc', 'str')
    expected = ("UserParameter(name='a', description='a desc', type='str', "
                "default='', min=None, max=None, allowed=None)")
    assert str(p) == expected