def test_validate_values(val: str, constraint: IntContraints, expected: str):
    assert constraint.validate(val) == expected
def test_validate_values_error(val: str, constraint: IntContraints,
                               expected: str):
    with pytest.raises(expected):
        constraint.validate(val)
import pytest

from typic.constraints import (
    IntContraints,
    FloatContraints,
    DecimalContraints,
    ConstraintValueError,
    ConstraintSyntaxError,
)
from typic.constraints.common import BaseConstraints


@pytest.mark.parametrize(
    argnames=("val", "constraint", "expected"),
    argvalues=[
        (0, IntContraints(), 0),
        (1, IntContraints(gt=0), 1),
        (2, IntContraints(ge=2), 2),
        (3, IntContraints(lt=4), 3),
        (4, IntContraints(le=4), 4),
        (5, IntContraints(mul=5), 5),
        (0.0, FloatContraints(), 0.0),
        (1.0, FloatContraints(gt=0), 1.0),
        (2.0, FloatContraints(ge=2), 2.0),
        (3.0, FloatContraints(lt=4), 3.0),
        (4.0, FloatContraints(le=4), 4.0),
        (5.0, FloatContraints(mul=5), 5.0),
        (Decimal(0.0), DecimalContraints(), 0.0),
        (Decimal(1.0), DecimalContraints(gt=0), 1.0),
        (Decimal(2.0), DecimalContraints(ge=2), 2.0),
        (Decimal(3.0), DecimalContraints(lt=4), 3.0),
示例#4
0
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import pytest

from typic.constraints import (
    MultiConstraints,
    StrConstraints,
    IntContraints,
)


@pytest.mark.parametrize(
    argnames=("constraints", "types"),
    argvalues=[
        (MultiConstraints(constraints=(StrConstraints(), IntContraints())), {str, int}),
        (
            MultiConstraints(
                constraints=(
                    MultiConstraints(constraints=(StrConstraints(), IntContraints())),
                    StrConstraints(),
                )
            ),
            {str, int},
        ),
    ],
)
def test_multi_type(constraints, types):
    assert {*constraints.type} == types


def test_empty():
示例#5
0
        ({1, 2}, SetContraints(max_items=2), {1, 2}),
        (frozenset([1, 2]), FrozenSetConstraints(), frozenset([1, 2])),
    ],
)
def test_validate_values(val: str, constraint: ListConstraints, expected: list):
    assert constraint.validate(val) == expected


@pytest.mark.parametrize(
    argnames=("val", "constraint", "expected"),
    argvalues=[
        ([], ListConstraints(min_items=1), ConstraintValueError),
        ([1, 2, 3], ListConstraints(max_items=2), ConstraintValueError),
        (
            (1, 2),
            TupleConstraints(values=(StrConstraints(), IntContraints())),
            ConstraintValueError,
        ),
        (
            ("foo", "bar"),
            TupleConstraints(values=(StrConstraints(), IntContraints())),
            ConstraintValueError,
        ),
    ],
)
def test_validate_values_error(
    val: str, constraint: ListConstraints, expected: Exception
):
    with pytest.raises(expected):
        constraint.validate(val)
示例#6
0

@dataclasses.dataclass
class Foo:
    bar: str = "bar"


@pytest.mark.parametrize(
    argnames=("val", "constraint", "expected"),
    argvalues=[
        (EMPTY, DictConstraints(), EMPTY),
        (FOO, DictConstraints(min_items=1), FOO),
        (FOOBAR, DictConstraints(max_items=2), FOOBAR),
        (FOOBAR, DictConstraints(required_keys=frozenset(("foo",))), FOOBAR),
        (FOO, DictConstraints(key_pattern=FPATT), FOO),
        (FOO, DictConstraints(patterns=FrozenDict({FPATT: IntContraints(ge=1)})), FOO),
        (FOO, DictConstraints(items=FrozenDict({"foo": IntContraints(ge=1)})), FOO),
        (FOOBAR, DictConstraints(key_dependencies=FrozenDict(foo=["bar"])), FOOBAR),
        (
            FOOBAR,
            DictConstraints(
                min_items=1,
                key_dependencies=FrozenDict(
                    foo=DictConstraints(required_keys=frozenset(["bar"]))
                ),
            ),
            FOOBAR,
        ),
    ],
)
def test_validate_keys(val: str, constraint: DictConstraints, expected: list):
示例#7
0
        ([Foo(), Foo(), 2], ListConstraints(unique=True), [Foo(), 2]),
    ],
)
def test_validate_values(val: str, constraint: ListConstraints,
                         expected: list):
    assert constraint.validate(val) == expected


@pytest.mark.parametrize(
    argnames=("val", "constraint", "expected"),
    argvalues=[
        ([], ListConstraints(min_items=1), ConstraintValueError),
        ([1, 2, 3], ListConstraints(max_items=2), ConstraintValueError),
        (
            (1, 2),
            TupleConstraints(values=(StrConstraints(), IntContraints())),
            ConstraintValueError,
        ),
        (
            ("foo", "bar"),
            TupleConstraints(values=(StrConstraints(), IntContraints())),
            ConstraintValueError,
        ),
    ],
)
def test_validate_values_error(val: str, constraint: ListConstraints,
                               expected: Exception):
    with pytest.raises(expected):
        constraint.validate(val)