Blame tests/run/for_in_range_T372.pyx

Packit 562c7a
# mode: run
Packit 562c7a
# ticket: 372
Packit 562c7a
Packit 562c7a
cimport cython
Packit 562c7a
Packit 562c7a
@cython.test_assert_path_exists("//ForFromStatNode")
Packit 562c7a
@cython.test_fail_if_path_exists("//ForInStatNode")
Packit 562c7a
def test_modify():
Packit 562c7a
    """
Packit 562c7a
    >>> test_modify()
Packit 562c7a
    0
Packit 562c7a
    1
Packit 562c7a
    2
Packit 562c7a
    3
Packit 562c7a
    4
Packit 562c7a
    <BLANKLINE>
Packit 562c7a
    (4, 0)
Packit 562c7a
    """
Packit 562c7a
    cdef int i, n = 5
Packit 562c7a
    for i in range(n):
Packit 562c7a
        print i
Packit 562c7a
        n = 0
Packit 562c7a
    print
Packit 562c7a
    return i,n
Packit 562c7a
Packit 562c7a
Packit 562c7a
@cython.test_assert_path_exists("//ForFromStatNode")
Packit 562c7a
@cython.test_fail_if_path_exists("//ForInStatNode")
Packit 562c7a
def test_negindex():
Packit 562c7a
    """
Packit 562c7a
    >>> test_negindex()
Packit 562c7a
    6
Packit 562c7a
    5
Packit 562c7a
    4
Packit 562c7a
    3
Packit 562c7a
    2
Packit 562c7a
    (2, 0)
Packit 562c7a
    """
Packit 562c7a
    cdef int i, n = 5
Packit 562c7a
    for i in range(n+1, 1, -1):
Packit 562c7a
        print i
Packit 562c7a
        n = 0
Packit 562c7a
    return i,n
Packit 562c7a
Packit 562c7a
Packit 562c7a
@cython.test_assert_path_exists("//ForFromStatNode",
Packit 562c7a
                                "//ForFromStatNode//PrintStatNode//CoerceToPyTypeNode")
Packit 562c7a
@cython.test_fail_if_path_exists("//ForInStatNode")
Packit 562c7a
def test_negindex_inferred():
Packit 562c7a
    """
Packit 562c7a
    >>> test_negindex_inferred()
Packit 562c7a
    5
Packit 562c7a
    4
Packit 562c7a
    3
Packit 562c7a
    2
Packit 562c7a
    (2, 0)
Packit 562c7a
    """
Packit 562c7a
    cdef int n = 5
Packit 562c7a
    for i in range(n, 1, -1):
Packit 562c7a
        print i
Packit 562c7a
        n = 0
Packit 562c7a
    return i,n
Packit 562c7a
Packit 562c7a
Packit 562c7a
@cython.test_assert_path_exists("//ForFromStatNode")
Packit 562c7a
@cython.test_fail_if_path_exists("//ForInStatNode")
Packit 562c7a
def test_fix():
Packit 562c7a
    """
Packit 562c7a
    >>> test_fix()
Packit 562c7a
    0
Packit 562c7a
    1
Packit 562c7a
    2
Packit 562c7a
    3
Packit 562c7a
    4
Packit 562c7a
    <BLANKLINE>
Packit 562c7a
    4
Packit 562c7a
    """
Packit 562c7a
    cdef int i
Packit 562c7a
    for i in range(5):
Packit 562c7a
        print i
Packit 562c7a
    print
Packit 562c7a
    return i
Packit 562c7a
Packit 562c7a
Packit 562c7a
@cython.test_assert_path_exists("//ForFromStatNode")
Packit 562c7a
@cython.test_fail_if_path_exists("//ForInStatNode")
Packit 562c7a
def test_break():
Packit 562c7a
    """
Packit 562c7a
    >>> test_break()
Packit 562c7a
    0
Packit 562c7a
    1
Packit 562c7a
    2
Packit 562c7a
    <BLANKLINE>
Packit 562c7a
    (2, 0)
Packit 562c7a
    """
Packit 562c7a
    cdef int i, n = 5
Packit 562c7a
    for i in range(n):
Packit 562c7a
        print i
Packit 562c7a
        n = 0
Packit 562c7a
        if i == 2:
Packit 562c7a
            break
Packit 562c7a
    else:
Packit 562c7a
        print "FAILED!"
Packit 562c7a
    print
Packit 562c7a
    return i,n
Packit 562c7a
Packit 562c7a
Packit 562c7a
@cython.test_assert_path_exists("//ForFromStatNode")
Packit 562c7a
@cython.test_fail_if_path_exists("//ForInStatNode")
Packit 562c7a
def test_return():
Packit 562c7a
    """
Packit 562c7a
    >>> test_return()
Packit 562c7a
    0
Packit 562c7a
    1
Packit 562c7a
    2
Packit 562c7a
    (2, 0)
Packit 562c7a
    """
Packit 562c7a
    cdef int i, n = 5
Packit 562c7a
    for i in range(n):
Packit 562c7a
        print i
Packit 562c7a
        n = 0
Packit 562c7a
        if i == 2:
Packit 562c7a
            return i,n
Packit 562c7a
    print
Packit 562c7a
    return "FAILED!"
Packit 562c7a
Packit 562c7a
Packit 562c7a
ctypedef enum RangeEnum:
Packit 562c7a
    EnumValue1
Packit 562c7a
    EnumValue2
Packit 562c7a
    EnumValue3
Packit 562c7a
Packit 562c7a
Packit 562c7a
@cython.test_assert_path_exists("//ForFromStatNode")
Packit 562c7a
@cython.test_fail_if_path_exists("//ForInStatNode")
Packit 562c7a
def test_enum_range():
Packit 562c7a
    """
Packit 562c7a
    # NOTE: it's not entirely clear that this is the expected behaviour, but that's how it currently is.
Packit 562c7a
    >>> test_enum_range()
Packit 562c7a
    'RangeEnum'
Packit 562c7a
    """
Packit 562c7a
    cdef RangeEnum n = EnumValue3
Packit 562c7a
    for i in range(n):
Packit 562c7a
        assert 0 <= <int>i < <int>n
Packit 562c7a
        assert cython.typeof(i) == "RangeEnum", cython.typeof(i)
Packit 562c7a
    return cython.typeof(i)