cython

Форк
0
/
charptr_from_temp.pyx 
89 строк · 1.6 Кб
1
# mode: run
2

3

4
cdef cfunc1(char* s):
5
    return s.decode('ASCII')
6

7

8
cdef cfunc3(int x, char* s, object y):
9
    return cfunc1(s)
10

11

12
def test_one_arg_indexing(s):
13
    """
14
    >>> test_one_arg_indexing(b'xyz')
15
    'y'
16
    """
17
    cfunc1(s[:1])
18
    z = cfunc1(s[2:])
19
    assert z == 'z', repr(z)
20
    return cfunc1(s[1:2])
21

22

23
def test_more_args_indexing(s):
24
    """
25
    >>> test_more_args_indexing(b'xyz')
26
    'y'
27
    """
28
    cfunc3(1, s[slice(0,1)], 6.5)
29
    z = cfunc3(2, s[slice(2,None)], 'abc' * 2)
30
    assert z == 'z', repr(z)
31
    return cfunc3(3, s[slice(1,2)], 1)
32

33

34
def test_one_arg_slicing(s):
35
    """
36
    >>> test_one_arg_slicing(b'xyz')
37
    'y'
38
    """
39
    cfunc1(s[:2])
40
    z = cfunc1(s[2:])
41
    assert z == 'z', repr(z)
42
    return cfunc1(s[1:2])
43

44

45
def test_more_args_slicing(s):
46
    """
47
    >>> test_more_args_slicing(b'xyz')
48
    'y'
49
    """
50
    cfunc3(1, s[:2], 'abc')
51
    z = cfunc3(123, s[2:], 5)
52
    assert z == 'z', repr(z)
53
    return cfunc3(2, s[1:2], 1.4)
54

55

56
def test_one_arg_adding(s):
57
    """
58
    >>> test_one_arg_adding(b'xyz')
59
    'abxyzqr'
60
    """
61
    return cfunc1(b"a" + b"b" + s + b"q" + b"r")
62

63

64
def test_more_args_adding(s):
65
    """
66
    >>> test_more_args_adding(b'xyz')
67
    'abxyzqr'
68
    """
69
    return cfunc3(1, b"a" + b"b" + s + b"q" + b"r", 'xyz%d' % 3)
70

71

72
cdef char* ret_charptr(char* s):
73
    return s
74

75

76
def test_charptr_and_charptr_func(char* s):
77
    """
78
    >>> test_charptr_and_charptr_func(b'abc') == b'abc'
79
    True
80
    """
81
    return s and ret_charptr(s)
82

83

84
def test_charptr_and_ucharptr(char* s):
85
    """
86
    >>> test_charptr_and_ucharptr(b'abc') == b'abc'
87
    True
88
    """
89
    return s and <unsigned char*>s
90

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.