Commit e8a12c46 authored by Stefan Behnel's avatar Stefan Behnel

extend SwitchTransform tests

parent e8b4275a
...@@ -4,6 +4,7 @@ cimport cython ...@@ -4,6 +4,7 @@ cimport cython
@cython.test_fail_if_path_exists('//SwitchStatNode') @cython.test_fail_if_path_exists('//SwitchStatNode')
@cython.test_assert_path_exists('//IfStatNode')
def switch_simple_py(x): def switch_simple_py(x):
""" """
>>> switch_simple_py(1) >>> switch_simple_py(1)
...@@ -31,6 +32,7 @@ def switch_simple_py(x): ...@@ -31,6 +32,7 @@ def switch_simple_py(x):
@cython.test_fail_if_path_exists('//SwitchStatNode') @cython.test_fail_if_path_exists('//SwitchStatNode')
@cython.test_assert_path_exists('//IfStatNode')
def switch_py(x): def switch_py(x):
""" """
>>> switch_py(1) >>> switch_py(1)
...@@ -72,6 +74,7 @@ def switch_py(x): ...@@ -72,6 +74,7 @@ def switch_py(x):
@cython.test_assert_path_exists('//SwitchStatNode') @cython.test_assert_path_exists('//SwitchStatNode')
@cython.test_fail_if_path_exists('//IfStatNode')
def switch_simple_c(int x): def switch_simple_c(int x):
""" """
>>> switch_simple_c(1) >>> switch_simple_c(1)
...@@ -99,6 +102,7 @@ def switch_simple_c(int x): ...@@ -99,6 +102,7 @@ def switch_simple_c(int x):
@cython.test_assert_path_exists('//SwitchStatNode') @cython.test_assert_path_exists('//SwitchStatNode')
@cython.test_fail_if_path_exists('//IfStatNode')
def switch_c(int x): def switch_c(int x):
""" """
>>> switch_c(1) >>> switch_c(1)
...@@ -140,6 +144,7 @@ def switch_c(int x): ...@@ -140,6 +144,7 @@ def switch_c(int x):
@cython.test_assert_path_exists('//SwitchStatNode') @cython.test_assert_path_exists('//SwitchStatNode')
@cython.test_fail_if_path_exists('//IfStatNode')
def switch_or(int x): def switch_or(int x):
""" """
>>> switch_or(0) >>> switch_or(0)
...@@ -161,6 +166,7 @@ def switch_or(int x): ...@@ -161,6 +166,7 @@ def switch_or(int x):
@cython.test_assert_path_exists('//SwitchStatNode') @cython.test_assert_path_exists('//SwitchStatNode')
@cython.test_fail_if_path_exists('//IfStatNode')
def switch_in(int X): def switch_in(int X):
""" """
>>> switch_in(0) >>> switch_in(0)
...@@ -180,6 +186,7 @@ def switch_in(int X): ...@@ -180,6 +186,7 @@ def switch_in(int X):
@cython.test_assert_path_exists('//SwitchStatNode') @cython.test_assert_path_exists('//SwitchStatNode')
@cython.test_fail_if_path_exists('//IfStatNode')
def switch_short(int x): def switch_short(int x):
""" """
>>> switch_short(0) >>> switch_short(0)
...@@ -201,6 +208,7 @@ def switch_short(int x): ...@@ -201,6 +208,7 @@ def switch_short(int x):
@cython.test_fail_if_path_exists('//SwitchStatNode') @cython.test_fail_if_path_exists('//SwitchStatNode')
@cython.test_assert_path_exists('//IfStatNode')
def switch_off(int x): def switch_off(int x):
""" """
>>> switch_off(0) >>> switch_off(0)
...@@ -217,7 +225,9 @@ def switch_off(int x): ...@@ -217,7 +225,9 @@ def switch_off(int x):
return -1 return -1
@cython.test_assert_path_exists('//SwitchStatNode') @cython.test_assert_path_exists('//SwitchStatNode')
@cython.test_fail_if_path_exists('//IfStatNode')
def switch_pass(int x): def switch_pass(int x):
""" """
>>> switch_pass(1) >>> switch_pass(1)
...@@ -235,6 +245,7 @@ def switch_pass(int x): ...@@ -235,6 +245,7 @@ def switch_pass(int x):
DEF t = (1,2,3,4,5,6) DEF t = (1,2,3,4,5,6)
@cython.test_assert_path_exists('//SwitchStatNode') @cython.test_assert_path_exists('//SwitchStatNode')
@cython.test_fail_if_path_exists('//IfStatNode')
def compile_time_tuple_constant(int x): def compile_time_tuple_constant(int x):
""" """
>>> compile_time_tuple_constant(1) >>> compile_time_tuple_constant(1)
...@@ -249,6 +260,7 @@ def compile_time_tuple_constant(int x): ...@@ -249,6 +260,7 @@ def compile_time_tuple_constant(int x):
else: else:
return False return False
cdef enum X: cdef enum X:
a = 1 a = 1
b b
...@@ -258,6 +270,7 @@ cdef enum X: ...@@ -258,6 +270,7 @@ cdef enum X:
f = 100 f = 100
@cython.test_assert_path_exists('//SwitchStatNode') @cython.test_assert_path_exists('//SwitchStatNode')
@cython.test_fail_if_path_exists('//IfStatNode')
def enum_switch(X x): def enum_switch(X x):
""" """
>>> enum_switch(1) >>> enum_switch(1)
...@@ -273,3 +286,53 @@ def enum_switch(X x): ...@@ -273,3 +286,53 @@ def enum_switch(X x):
return 1 return 1
else: else:
return 2 return 2
@cython.test_assert_path_exists('//IfStatNode')
@cython.test_assert_path_exists('//IfStatNode//SwitchStatNode')
def enum_duplicates(X x):
"""
>>> enum_duplicates(1)
0
>>> enum_duplicates(2) # b
0
>>> enum_duplicates(10)
1
>>> enum_duplicates(100)
3
"""
if x in [a, b, c, d]: # switch is ok here!
return 0
elif x == e:
return 1
elif x == b: # duplicate => no switch here!
return 2
else:
return 3
@cython.test_assert_path_exists('//SwitchStatNode')
@cython.test_fail_if_path_exists('//IfStatNode')
def int_enum_switch_mix(int x):
"""
>>> int_enum_switch_mix(1)
0
>>> int_enum_switch_mix(10)
1
>>> int_enum_switch_mix(ord('X'))
2
>>> int_enum_switch_mix(99)
3
>>> int_enum_switch_mix(100)
4
"""
if x in [a, b, c, d]:
return 0
elif x == e:
return 1
elif x == 'X': # ASCII(88)
return 2
elif x == 99:
return 3
else:
return 4
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment