cython
1def test_ptr():
2"""
3>>> test_ptr()
4False
5"""
6cdef void* p = NULL
7if p:
8return True
9else:
10return False
11
12def test_ptr2():
13"""
14>>> test_ptr2()
152
16"""
17cdef char* p1 = NULL
18cdef char* p2 = NULL
19p1 += 1
20
21if p1 and p2:
22return 1
23elif p1 or p2:
24return 2
25else:
26return 3
27
28def test_int(int i):
29"""
30>>> test_int(0)
31False
32>>> test_int(1)
33True
34"""
35if i:
36return True
37else:
38return False
39
40def test_short(short i):
41"""
42>>> test_short(0)
43False
44>>> test_short(1)
45True
46"""
47if i:
48return True
49else:
50return False
51
52def test_Py_ssize_t(Py_ssize_t i):
53"""
54>>> test_Py_ssize_t(0)
55False
56>>> test_Py_ssize_t(1)
57True
58"""
59if i:
60return True
61else:
62return False
63
64cdef class TestExtInt:
65cdef int i
66def __init__(self, i): self.i = i
67
68def test_attr_int(TestExtInt e):
69"""
70>>> test_attr_int(TestExtInt(0))
71False
72>>> test_attr_int(TestExtInt(1))
73True
74"""
75if e.i:
76return True
77else:
78return False
79
80ctypedef union _aux:
81size_t i
82void *p
83
84cdef class TestExtPtr:
85cdef void* p
86def __init__(self, int i):
87cdef _aux aux
88aux.i = i
89self.p = aux.p
90
91def test_attr_ptr(TestExtPtr e):
92"""
93>>> test_attr_ptr(TestExtPtr(0))
94False
95>>> test_attr_ptr(TestExtPtr(1))
96True
97"""
98if e.p:
99return True
100else:
101return False
102