コード例 #1
0
def test_set():
    a = Array(Value("str"))
    a.set("abc")
    assert a.value == ["a", "b", "c"]

    a = Array(Value("int"))
    a.set([1, 2, 3])
    assert a.value == [1, 2, 3]
コード例 #2
0
def test_get_unset_value():
    v = Value(type_name="bool")
    assert v.value is None

    v = Value(type_name="float")
    assert v.value is None

    v = Value(type_name="int")
    assert v.value is None

    v = Value(type_name="str")
    assert v.value is None
コード例 #3
0
def test_getitem_without_base_type():
    a = Array(Value("int"))
    a.add(1)
    a.add("2")

    assert a[0] == 1
    assert a[1] == 2
コード例 #4
0
def test_getitem_with_base_type():
    a = Array(Value("int"), strict=True)
    a.add(1)
    a.add("2")

    assert a[0] is 1
    assert a[1] == 2
コード例 #5
0
def test_add():
    a = Array(Value("int"))
    a.add(1)
    a.add(2)

    assert a.add(2) == a
    assert a[0] == 1
    assert a[1] == 2
コード例 #6
0
ファイル: utils.py プロジェクト: tillroy/container
def build_container(config, strict=True):
    _body = dict()
    for el in config:
        val = Value(el["type"], required=el["required"])
        _body[el["name"]] = val

    class ContainerBuilder(Container):
        body = _body

    res = ContainerBuilder(strict=strict)
    return res
コード例 #7
0
def test_parse_bool_success():
    v = Value(type_name="bool")

    v._value = 1
    assert v.value is True

    v._value = 2.2
    assert v.value is True

    v._value = "2"
    assert v.value is True

    v._value = {"a"}
    assert v.value is True

    v._value = [1, 4, 4, 4, 4]
    assert v.value is True
コード例 #8
0
def test_parse_bool_failure():
    v = Value(type_name="bool")

    v._value = ""
    assert v.value is False

    v._value = list()
    assert v.value is False

    v._value = dict()
    assert v.value is False

    v._value = set()
    assert v.value is False
コード例 #9
0
def test_is_allowed():
    v = Value(type_name="int", allowed={1, 2, 3, 4})

    v.set(1)
    assert v.value == 1
コード例 #10
0
def test_is_allowed_not_strict_failure():
    v = Value(type_name="int", allowed={1, 2, 3, 4}, strict=False)

    v.set(5)
    assert v.value is None
    assert v.is_valid is False
コード例 #11
0
def test_value_failure_2():
    v = Value(type_name="int", strict=True)

    with pytest.raises(exc.IntError):
        v.set("5.1")
        v.value
コード例 #12
0
def test_is_allowed_failure():
    v = Value(type_name="int", allowed={1, 2, 3, 4})

    with pytest.raises(exc.ForbiddenValue):
        v.set(5)
        v.value
コード例 #13
0
def test_empty_array_value():
    a = Array(Value("int"))

    assert a.value is None
コード例 #14
0
def test_check_avaliable_types():
    v = Value("str")

    assert v.types == {"float", "int", "str", "bool"}
コード例 #15
0
def test_parse_float_not_srtict_failure():
    v = Value(type_name="float", strict=False)
    res = v.parse_float("22a")

    assert res is None
    assert v.is_valid is False
コード例 #16
0
ファイル: test_container.py プロジェクト: tillroy/container
class Cont2(Container):
    body = {
        "a": Value("int", meta={"edit": True}),
        "b": Value("int", meta={"edit": False}),
        "c": Value("int", meta={"edit": True})
    }
コード例 #17
0
ファイル: test_container.py プロジェクト: tillroy/container
class Cont(Container):
    body = {"a": Value("int", meta={"edit": True})}
コード例 #18
0
ファイル: test_container.py プロジェクト: tillroy/container
class Cont1(Container):
    body = {"a": Value("int"), "b": Cont()}
コード例 #19
0
ファイル: test_container.py プロジェクト: tillroy/container

class Cont1(Container):
    body = {"a": Value("int"), "b": Cont()}


class Cont2(Container):
    body = {
        "a": Value("int", meta={"edit": True}),
        "b": Value("int", meta={"edit": False}),
        "c": Value("int", meta={"edit": True})
    }


_body = {
    "v1": Value("int"),
    "v2": Value("float"),
    "v3": Value("bool"),
    "v4": Value("str", required=True),
    "a1": Any(),
    "a2": Any(),
    "r1": Array(Value("int")),
    "d1": Dictionary(),
    "c1": Cont()
}


class C(Container):
    body = _body

コード例 #20
0
def test_get_value_only_valid():
    a = Array(Value("int"), strict=False)
    a.add(1)
    a.add("2.a")

    assert a.get() == [1]
コード例 #21
0
def test_get_all_values():
    vi = Value("int", strict=False)
    assert vi.set("1").value == 1
    assert vi.set("1.1").value == None
    assert vi.set("1,1").value == None
    assert vi.set("1,a").value == None
    assert vi.set("1,").value == 1
    assert vi.set("1.").value == 1
    assert vi.set(1).value == 1
    assert vi.set(1.3).value == None
    assert vi.set(None).value is None

    vf = Value("float")
    assert vf.set("1").value == 1.0
    assert vf.set("1.1").value == 1.1
    assert vf.set("1,1").value == 1.1
    assert vf.set("1,").value == 1.0
    assert vf.set(".1").value == 0.1
    assert vf.set(",1").value == 0.1
    assert vf.set(1).value == 1.0
    assert vf.set(1.2).value == 1.2
    assert vf.set(None).value is None
コード例 #22
0
def test_is_list():
    a = Array(Value("int"))

    assert isinstance(a._value, list)
コード例 #23
0
def test_set():
    v = Value("int")

    assert v.set(1) == v
コード例 #24
0
def test_parse_int_success():
    v = Value(type_name="int", strict=False)

    res = v.parse_int("1")
    assert res == 1

    res = v.parse_int("1.0")
    assert res == 1

    res = v.parse_int("1,1")
    assert res == None

    res = v.parse_int("1,a")
    assert res == None

    res = v.parse_int("1.a")
    assert res == None

    res = v.parse_int(True)
    assert res == 1

    res = v.parse_int(False)
    assert res == 0

    res = v.parse_int(1)
    assert res == 1

    res = v.parse_int(1.2)
    assert res == None
コード例 #25
0
def test_return_none():
    v = Value(type_name="float")

    res = v.parse_float(None)
    assert res is None
コード例 #26
0
def test_type():
    a = Array(Value("int"))

    assert a.type == "array"
コード例 #27
0
def test_parse_float_strict_failure():
    v = Value(type_name="float", strict=True)
    with pytest.raises(exc.FloatError):
        v.parse_float("2a")
コード例 #28
0
def test_check_type():
    with pytest.raises(exc.WrongFieldType):
        Value(type_name="string")
コード例 #29
0
def test_parse_float_success():
    v = Value(type_name="float", strict=False)

    res = v.parse_float("2")
    assert res == 2.0

    res = v.parse_float("2.")
    assert res == 2.0

    res = v.parse_float("2,")
    assert res == 2.0

    res = v.parse_float(".1")
    assert res == 0.1

    res = v.parse_float(",1")
    assert res == 0.1

    res = v.parse_float("2,23")
    assert res == 2.23

    res = v.parse_float("2.222")
    assert res == 2.222

    res = v.parse_float(2)
    assert res == 2.0

    res = v.parse_float(2.0)
    assert res == 2.0

    res = v.parse_float(True)
    assert res == 1.0

    res = v.parse_float(False)
    assert res == 0.0
コード例 #30
0
def test_parse_int_strict_failure():
    v = Value(type_name="int", strict=True)
    with pytest.raises(exc.IntError):
        v.parse_int("2a")