|
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)
|