Blame tests/run/cpp_stl_string_ascii_auto_encoding_str.pyx

Packit 562c7a
# mode: run
Packit 562c7a
# tag: cpp, werror
Packit 562c7a
# cython: c_string_encoding=ascii, c_string_type=str
Packit 562c7a
Packit 562c7a
cimport cython
Packit 562c7a
Packit 562c7a
from libcpp.string cimport string
Packit 562c7a
Packit 562c7a
b_asdf = b'asdf'
Packit 562c7a
u_asdf = u'asdf'
Packit 562c7a
s_asdf = 'asdf'
Packit 562c7a
s_s = 's'
Packit 562c7a
Packit 562c7a
Packit 562c7a
def test_conversion(py_obj):
Packit 562c7a
    """
Packit 562c7a
    >>> test_conversion(b_asdf) == s_asdf or test_conversion(b_asdf)
Packit 562c7a
    True
Packit 562c7a
    >>> test_conversion(u_asdf) == s_asdf or test_conversion(u_asdf)
Packit 562c7a
    True
Packit 562c7a
    >>> test_conversion(123)  # doctest: +ELLIPSIS
Packit 562c7a
    Traceback (most recent call last):
Packit 562c7a
    TypeError: expected ..., int found
Packit 562c7a
    """
Packit 562c7a
    cdef string s = py_obj
Packit 562c7a
    assert <size_t>len(py_obj) == s.length(), '%d != %d' % (len(py_obj), s.length())
Packit 562c7a
    return s
Packit 562c7a
Packit 562c7a
Packit 562c7a
def test_empty(py_obj):
Packit 562c7a
    """
Packit 562c7a
    >>> test_empty('')
Packit 562c7a
    True
Packit 562c7a
    >>> test_empty('abc')
Packit 562c7a
    False
Packit 562c7a
    >>> test_empty(u_asdf[:0])
Packit 562c7a
    True
Packit 562c7a
    >>> test_empty(u_asdf)
Packit 562c7a
    False
Packit 562c7a
    """
Packit 562c7a
    cdef string a = py_obj
Packit 562c7a
    return a.empty()
Packit 562c7a
Packit 562c7a
Packit 562c7a
def test_push_back(a):
Packit 562c7a
    """
Packit 562c7a
    >>> test_push_back(b_asdf) == s_asdf + s_s
Packit 562c7a
    True
Packit 562c7a
    >>> test_push_back(u_asdf) == s_asdf + s_s
Packit 562c7a
    True
Packit 562c7a
    """
Packit 562c7a
    cdef string s = a
Packit 562c7a
    s.push_back(<char>ord('s'))
Packit 562c7a
    return s
Packit 562c7a
Packit 562c7a
Packit 562c7a
def test_clear(a):
Packit 562c7a
    """
Packit 562c7a
    >>> test_clear(u_asdf) == s_s[:0]
Packit 562c7a
    True
Packit 562c7a
    >>> test_clear(b_asdf) == s_s[:0]
Packit 562c7a
    True
Packit 562c7a
    """
Packit 562c7a
    cdef string s = a
Packit 562c7a
    s.clear()
Packit 562c7a
    return s
Packit 562c7a
Packit 562c7a
Packit 562c7a
def test_assign(char *a):
Packit 562c7a
    """
Packit 562c7a
    >>> test_assign(b_asdf) == 'ggg'
Packit 562c7a
    True
Packit 562c7a
    """
Packit 562c7a
    cdef string s = string(a)
Packit 562c7a
    s.assign(<char *>"ggg")
Packit 562c7a
    return s.c_str()
Packit 562c7a
Packit 562c7a
Packit 562c7a
def test_bytes_cast(a):
Packit 562c7a
    """
Packit 562c7a
    >>> b = test_bytes_cast(b'abc')
Packit 562c7a
    >>> isinstance(b, bytes)
Packit 562c7a
    True
Packit 562c7a
    >>> print(b.decode('ascii'))
Packit 562c7a
    abc
Packit 562c7a
    >>> b = test_bytes_cast(b'abc\\xe4\\xfc')
Packit 562c7a
    >>> isinstance(b, bytes)
Packit 562c7a
    True
Packit 562c7a
    >>> len(b)
Packit 562c7a
    5
Packit 562c7a
    >>> print(b[:3].decode('ascii'))
Packit 562c7a
    abc
Packit 562c7a
    >>> print(ord(b[3:4]))
Packit 562c7a
    228
Packit 562c7a
    >>> print(ord(b[4:5]))
Packit 562c7a
    252
Packit 562c7a
    """
Packit 562c7a
    cdef string s = a
Packit 562c7a
    assert s.length() == <size_t>len(a), "%d != %d" % (s.length(), len(a))
Packit 562c7a
    return <bytes>s
Packit 562c7a
Packit 562c7a
Packit 562c7a
def test_bytearray_cast(a):
Packit 562c7a
    """
Packit 562c7a
    >>> b = test_bytearray_cast(b'abc')
Packit 562c7a
    >>> isinstance(b, bytearray)
Packit 562c7a
    True
Packit 562c7a
    >>> print(b.decode('ascii'))
Packit 562c7a
    abc
Packit 562c7a
    >>> b = test_bytearray_cast(b'abc\\xe4\\xfc')
Packit 562c7a
    >>> isinstance(b, bytearray)
Packit 562c7a
    True
Packit 562c7a
    >>> len(b)
Packit 562c7a
    5
Packit 562c7a
    >>> print(b[:3].decode('ascii'))
Packit 562c7a
    abc
Packit 562c7a
    >>> print(ord(b[3:4]))
Packit 562c7a
    228
Packit 562c7a
    >>> print(ord(b[4:5]))
Packit 562c7a
    252
Packit 562c7a
    """
Packit 562c7a
    cdef string s = a
Packit 562c7a
    assert s.length() == <size_t>len(a), "%d != %d" % (s.length(), len(a))
Packit 562c7a
    return <bytearray>s
Packit 562c7a
Packit 562c7a
Packit 562c7a
def test_unicode_cast(a):
Packit 562c7a
    """
Packit 562c7a
    >>> u = test_unicode_cast(b'abc')
Packit 562c7a
    >>> type(u) is type(u_asdf) or type(u)
Packit 562c7a
    True
Packit 562c7a
    >>> print(u)
Packit 562c7a
    abc
Packit 562c7a
    """
Packit 562c7a
    cdef string s = a
Packit 562c7a
    assert s.length() == <size_t>len(a), "%d != %d" % (s.length(), len(a))
Packit 562c7a
    return <unicode>s
Packit 562c7a
Packit 562c7a
Packit 562c7a
def test_str_cast(a):
Packit 562c7a
    """
Packit 562c7a
    >>> s = test_str_cast(b'abc')
Packit 562c7a
    >>> type(s) is type(s_asdf) or type(s)
Packit 562c7a
    True
Packit 562c7a
    >>> print(s)
Packit 562c7a
    abc
Packit 562c7a
    """
Packit 562c7a
    cdef string s = a
Packit 562c7a
    assert s.length() == <size_t>len(a), "%d != %d" % (s.length(), len(a))
Packit 562c7a
    return <str>s