# Copyright 2026 jCloud Services GbR # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from src.jcloud_docsgen.utils import assert_that_is_instance import pytest import types class TestType: ... TestType.__name__ = 'NOT TestType' @pytest.mark.parametrize('obj,class_or_tuple', [ (1, int), (1, (int,)), (1, str | int), (1, int | str | list), (TestType(), TestType), (None, types.NoneType), ]) def test_assert_that_is_instance(obj, class_or_tuple): assert_that_is_instance(obj, class_or_tuple) @pytest.mark.parametrize('obj,class_or_tuple,expected_exception_msg', [ (1, str, 'expected \'str\', got \'int\''), (1, (str,), 'expected \'str\', got \'int\''), (1, str | float, 'expected either \'str\' or \'float\', got \'int\''), (1, str | float | list, 'expected either \'str\', \'float\' or \'list\', got \'int\''), (1, TestType, 'expected \'NOT TestType\', got \'int\''), ]) def test_assert_that_is_instance_exceptions(obj, class_or_tuple, expected_exception_msg): with pytest.raises(TypeError) as exc_info: assert_that_is_instance(obj, class_or_tuple) assert str(exc_info.value) == expected_exception_msg