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),
#!/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():
({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)
@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):
([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)