# coding=utf8
# mode: run
# tag: constant_folding
cimport cython
bstring = b'abc\xE9def'
ustring = u'abc\xE9def'
surrogates_ustring = u'abc\U00010000def'
@cython.test_fail_if_path_exists(
"//SliceIndexNode",
)
def bytes_slicing2():
"""
>>> a,b,c,d = bytes_slicing2()
>>> a == bstring[:]
True
>>> b == bstring[2:]
True
>>> c == bstring[:4]
True
>>> d == bstring[2:4]
True
"""
str0 = b'abc\xE9def'[:]
str1 = b'abc\xE9def'[2:]
str2 = b'abc\xE9def'[:4]
str3 = b'abc\xE9def'[2:4]
return str0, str1, str2, str3
@cython.test_fail_if_path_exists(
"//SliceIndexNode",
)
def unicode_slicing2():
"""
>>> a,b,c,d = unicode_slicing2()
>>> a == ustring[:]
True
>>> b == ustring[2:]
True
>>> c == ustring[:4]
True
>>> d == ustring[2:4]
True
"""
str0 = u'abc\xE9def'[:]
str1 = u'abc\xE9def'[2:]
str2 = u'abc\xE9def'[:4]
str3 = u'abc\xE9def'[2:4]
return str0, str1, str2, str3
@cython.test_assert_path_exists(
"//SliceIndexNode",
)
def unicode_slicing_unsafe_surrogates2():
"""
>>> unicode_slicing_unsafe_surrogates2() == surrogates_ustring[2:]
True
"""
ustring = u'abc\U00010000def'[2:]
return ustring
@cython.test_fail_if_path_exists(
"//SliceIndexNode",
)
def unicode_slicing_safe_surrogates2():
"""
>>> unicode_slicing_safe_surrogates2() == surrogates_ustring[:2]
True
>>> print(unicode_slicing_safe_surrogates2())
ab
"""
ustring = u'abc\U00010000def'[:2]
return ustring
@cython.test_fail_if_path_exists(
"//ComprehensionNode",
"//ForInStatNode",
)
@cython.test_assert_path_exists(
"//SetNode",
)
def for_in_empty_setcomp():
"""
>>> s = for_in_empty_setcomp()
>>> isinstance(s, set)
True
>>> len(s)
0
"""
return {i for i in []}
@cython.test_fail_if_path_exists(
"//ReturnStatNode//AddNode",
)
@cython.test_assert_path_exists(
"//ListNode//AddNode",
)
def add_strings():
"""
>>> u, b, rest = add_strings()
>>> u == 'abcdef' or u
True
>>> b == b'abcdef' or b
True
>>> rest
1
"""
a = ["abc" + "def"] # not currently optimised
# FIXME: test encodings and unicode escapes
return u"abc" + u"def", b"abc" + b"def", a[0] and 1