def test_default() -> None:
    'Test the ``default`` parameter of :function:``argcomb.__init__``.\n\n    This test also serves to check the basic functionality of\n    ``argcomb`` for different types of signature: normal arguments,\n    keyword only arguments, positional only arguments, or any\n    combination of the above.\n    '

    def test_func(func: Callable[(..., None)], kw_only_count: int, pos_only_count: int) -> None:
        'Test a given function ``f``. '
        with pytest.raises(InvalidArgumentCombination):
            func()
        if (pos_only_count == 0):
            func(a=1)
            func(a=1, b=1)
            func(a=1, b=None)
            with pytest.raises(InvalidArgumentCombination):
                func(a=None, b=1)
        if (kw_only_count < 2):
            func(1)
        if ((kw_only_count < 2) and (pos_only_count < 2)):
            func(1, b=1)
            func(1, b=None)
            with pytest.raises(InvalidArgumentCombination):
                func(None, b=1)
        if (kw_only_count == 0):
            func(1, 1)
            func(1, None)
            with pytest.raises(InvalidArgumentCombination):
                func(None, 1)
        if (pos_only_count < 2):
            with pytest.raises(InvalidArgumentCombination):
                func(b=1)

    @argcomb('a')
    def f(a: Any=None, b: Any=None) -> None:
        ...
    test_func(f, kw_only_count=0, pos_only_count=0)

    @argcomb('a')
    def g(a: Any=None, *, b: Any=None) -> None:
        ...
    test_func(g, kw_only_count=1, pos_only_count=0)

    @argcomb('a')
    def h(*, a: Any=None, b: Any=None) -> None:
        ...
    test_func(h, kw_only_count=2, pos_only_count=0)

    @argcomb('a')
    def i(a: Any=None, /, b: Any=None) -> None:
        ...
    test_func(i, kw_only_count=0, pos_only_count=1)

    @argcomb('a')
    def j(a: Any=None, b: Any=None, /) -> None:
        ...
    test_func(j, kw_only_count=0, pos_only_count=2)

    @argcomb('a')
    def k(a: Any=None, /, *, b: Any=None) -> None:
        ...
    test_func(k, kw_only_count=1, pos_only_count=1)
Test the ``default`` parameter of :function:``argcomb.__init__``.

This test also serves to check the basic functionality of
``argcomb`` for different types of signature: normal arguments,
keyword only arguments, positional only arguments, or any
combination of the above.
def test_default() -> None:
    'Test the ``default`` parameter of :function:``argcomb.__init__``.\n\n    This test also serves to check the basic functionality of\n    ``argcomb`` for different types of signature: normal arguments,\n    keyword only arguments, positional only arguments, or any\n    combination of the above.\n    '

    def test_func(func: Callable[(..., None)], kw_only_count: int, pos_only_count: int) -> None:
        'Test a given function ``f``. '
        with pytest.raises(InvalidArgumentCombination):
            func()
        if (pos_only_count == 0):
            func(a=1)
            func(a=1, b=1)
            func(a=1, b=None)
            with pytest.raises(InvalidArgumentCombination):
                func(a=None, b=1)
        if (kw_only_count < 2):
            func(1)
        if ((kw_only_count < 2) and (pos_only_count < 2)):
            func(1, b=1)
            func(1, b=None)
            with pytest.raises(InvalidArgumentCombination):
                func(None, b=1)
        if (kw_only_count == 0):
            func(1, 1)
            func(1, None)
            with pytest.raises(InvalidArgumentCombination):
                func(None, 1)
        if (pos_only_count < 2):
            with pytest.raises(InvalidArgumentCombination):
                func(b=1)

    @argcomb('a')
    def f(a: Any=None, b: Any=None) -> None:
        ...
    test_func(f, kw_only_count=0, pos_only_count=0)

    @argcomb('a')
    def g(a: Any=None, *, b: Any=None) -> None:
        ...
    test_func(g, kw_only_count=1, pos_only_count=0)

    @argcomb('a')
    def h(*, a: Any=None, b: Any=None) -> None:
        ...
    test_func(h, kw_only_count=2, pos_only_count=0)

    @argcomb('a')
    def i(a: Any=None, /, b: Any=None) -> None:
        ...
    test_func(i, kw_only_count=0, pos_only_count=1)

    @argcomb('a')
    def j(a: Any=None, b: Any=None, /) -> None:
        ...
    test_func(j, kw_only_count=0, pos_only_count=2)

    @argcomb('a')
    def k(a: Any=None, /, *, b: Any=None) -> None:
        ...
    test_func(k, kw_only_count=1, pos_only_count=1)