Blame tests/run/ctypedef_char_types.pyx

Packit 562c7a
Packit 562c7a
cimport cython
Packit 562c7a
from cython cimport typeof
Packit 562c7a
Packit 562c7a
from libc.string cimport const_char, const_uchar
Packit 562c7a
Packit 562c7a
@cython.test_assert_path_exists(
Packit 562c7a
    "//NameNode[@name = 'st' and @type.is_string = True]",
Packit 562c7a
    "//NameNode[@name = 'ust' and @type.is_string = True]",
Packit 562c7a
    "//NameNode[@name = 'my_st' and @type.is_string = True]",
Packit 562c7a
    "//NameNode[@name = 'my_ust' and @type.is_string = True]",
Packit 562c7a
    )
Packit 562c7a
def const_charptrs():
Packit 562c7a
    """
Packit 562c7a
    >>> const_charptrs()
Packit 562c7a
    """
Packit 562c7a
    cdef object obj
Packit 562c7a
    cdef const_char*  st  = b'XYZ'
Packit 562c7a
    cdef const_uchar* ust = <unsigned char*>b'XYZ' # needs cast to unsigned
Packit 562c7a
Packit 562c7a
    assert typeof(st) == "const_char *", typeof(st)
Packit 562c7a
    my_st = st
Packit 562c7a
    assert typeof(my_st) == "const_char *", typeof(my_st)
Packit 562c7a
    obj = my_st
Packit 562c7a
    assert obj == b'XYZ', obj
Packit 562c7a
Packit 562c7a
    assert typeof(ust) == "const_uchar *", typeof(ust)
Packit 562c7a
    my_ust = ust
Packit 562c7a
    assert typeof(my_ust) == "const_uchar *", typeof(my_ust)
Packit 562c7a
    obj = my_ust
Packit 562c7a
    assert obj == b'XYZ', obj
Packit 562c7a
Packit 562c7a
ctypedef char mychar
Packit 562c7a
ctypedef unsigned char myuchar
Packit 562c7a
Packit 562c7a
def const_char_arrays():
Packit 562c7a
    """
Packit 562c7a
    >>> const_char_arrays()
Packit 562c7a
    """
Packit 562c7a
    cdef int i
Packit 562c7a
    cdef object obj
Packit 562c7a
    cdef mychar[4]  st
Packit 562c7a
    cdef myuchar[4] ust
Packit 562c7a
    cdef char ch
Packit 562c7a
Packit 562c7a
    i = 0
Packit 562c7a
    for ch in b'XYZ\0':
Packit 562c7a
        st[i] = ch
Packit 562c7a
        ust[i] = <unsigned char>ch
Packit 562c7a
        i += 1
Packit 562c7a
Packit 562c7a
    assert typeof(st) == "mychar [4]", typeof(st)
Packit 562c7a
    obj = st
Packit 562c7a
    assert obj == b'XYZ', obj
Packit 562c7a
Packit 562c7a
    assert typeof(ust) == "myuchar [4]", typeof(ust)
Packit 562c7a
    obj = ust
Packit 562c7a
    assert obj == b'XYZ', obj