def test_fib_all_negative(n: int):
    """Check that all negative values raise value error."""
    # Why not just use PyTest's parameters here?
    with pytest.raises(ValueError):
        fib(n)
def test_fib_minus_one():
    """Check that calling fib function raises an exception if called with minus one."""
    with pytest.raises(ValueError):
        fib(-1)
def test_fib_minus_tree():
    """Check that calling fib function with minus three raises an exception."""
    with pytest.raises(ValueError):
        fib(-3)
def test_fib_zero():
    """Check zero'th element of an Fibonacci sequence - does 0th number exist?"""
    with pytest.raises(ValueError):
        fib(0)
def test_fib_three():
    assert fib(3) == 1, "Wrong third Fibonacci number"
def test_fib_two():
    assert fib(2) == 1, "Should be 1 for the second Fibonacci number"
def test_fib_one():
    assert fib(1) == 0, "The very first Fibonacci number should be 0"
def test_fib_minus_two():
    """Check that calling fib function with minus two raises an exception."""
    with pytest.raises(RuntimeError):
        fib(-2)