Example #1
0
def test_main(obj: Any, cls: Any, expected: Exception | None) -> None:
    if expected is None:
        check_isinstance(obj, cls)
    else:
        with raises(type(expected)) as exc_info:
            check_isinstance(obj, cls)
        assert exc_info.value == expected
Example #2
0
 def test_fail_inner(
     self,
     obj: Any,
     cls: Any,
     keys: dict[int, SpecificTypeError],
     values: dict[int, SpecificTypeError],
 ) -> None:
     with raises(TypeErrorsInMapping) as exc_info:
         check_isinstance(obj, cls)
     assert exc_info.value == TypeErrorsInMapping(keys, values)
Example #3
0
def check_dataclass(
    obj: Any,
    *,
    globalns: dict[str, Any] | None = None,
    localns: dict[str, Any] | None = None,
) -> None:
    if isinstance(obj, type):
        raise ArgumentIsAClass(obj)
    try:
        obj_fields = fields(obj)
    except TypeError:
        raise ArgumentIsNotADataClass(obj)
    else:
        errors = {}
        for field in obj_fields:
            name = field.name
            value = getattr(obj, name)
            cls = get_type_hints(obj, globalns=globalns, localns=localns)[name]
            try:
                check_isinstance(value, cls)
            except TypeError as error:
                errors[name] = error
        if errors:
            raise TypeErrorsInDataClass(errors)
Example #4
0
 def test_fail(self, obj: Any) -> None:
     assert isinstance(obj, int)
     with raises(SpecificTypeError) as exc_info:
         check_isinstance(obj, int)
     assert exc_info.value == SpecificTypeError(obj, int)
Example #5
0
 def test_ok(self, obj: Any) -> None:
     check_isinstance(obj, bool)
Example #6
0
def test_iterator() -> None:
    check_isinstance(iter(range(3)), Iterator)
    check_isinstance(iter(range(3)), Iterator[int])
Example #7
0
 def test_ok(self, obj: Any, cls: Any) -> None:
     check_isinstance(obj, cls)
Example #8
0
 def test_fail_outer(self, obj: Any, cls: Any) -> None:
     with raises(SpecificTypeError) as exc_info:
         check_isinstance(obj, cls)
     assert exc_info.value == SpecificTypeError(obj, cls)
Example #9
0
 def test_fail_inner(self, obj: Any, cls: Any,
                     errors: dict[int, SpecificTypeError]) -> None:
     with raises(TypeErrorsInIterable) as exc_info:
         check_isinstance(obj, cls)
     assert exc_info.value == TypeErrorsInIterable(errors)