issues.py 2.01 KB
Newer Older
1
2
3
4
5
#!/usr/bin/env python
from __future__ import print_function
import sys
sys.path.append('.')

6
from example.issues import print_cchar, print_char
7
from example.issues import DispatchIssue, dispatch_issue_go
Wenzel Jakob's avatar
Wenzel Jakob committed
8
from example.issues import Placeholder, return_vec_of_reference_wrapper
9
from example.issues import iterator_passthrough
10
from example.issues import ElementList, ElementA, print_element
11
from example.issues import expect_float, expect_int
12
from example.issues import A, call_f
13
from example.issues import StrIssue
14
from example.issues import NestA, NestB, NestC, print_NestA, print_NestB, print_NestC
Wenzel Jakob's avatar
Wenzel Jakob committed
15
import gc
16
17

print_cchar("const char *")
18
print_char('c')
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36


class PyClass1(DispatchIssue):
    def dispatch(self):
        print("Yay..")


class PyClass2(DispatchIssue):
    def dispatch(self):
        try:
            super(PyClass2, self).dispatch()
        except Exception as e:
            print("Failed as expected: " + str(e))
        p = PyClass1()
        dispatch_issue_go(p)

b = PyClass2()
dispatch_issue_go(b)
37

38
print(return_vec_of_reference_wrapper(Placeholder(4)))
39
40

print(list(iterator_passthrough(iter([3, 5, 7, 9, 11, 13, 15]))))
Wenzel Jakob's avatar
Wenzel Jakob committed
41
42
43
44
45
46
47
48

el = ElementList()
for i in range(10):
    el.add(ElementA(i))
gc.collect()
for i, v in enumerate(el.get()):
    print("%i==%i, " % (i, v.value()), end='')
print()
49
50
51
52
53

try:
    print_element(None)
except Exception as e:
    print("Failed as expected: " + str(e))
54
55
56
57
58
59
60

try:
    print(expect_int(5.2))
except Exception as e:
    print("Failed as expected: " + str(e))

print(expect_float(12))
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

class B(A):
    def __init__(self):
        super(B, self).__init__()

    def f(self):
        print("In python f()")

print("C++ version")
a = A()
call_f(a)

print("Python version")
b = B()
call_f(b)

77
78
79
80
81
print(StrIssue(3))
try:
    print(StrIssue("no", "such", "constructor"))
except TypeError as e:
    print("Failed as expected: " + str(e))
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

a = NestA()
b = NestB()
c = NestC()
a += 10
b.a += 100
c.b.a += 1000
b -= 1
c.b -= 3
c *= 7
print_NestA(a)
print_NestA(b.a)
print_NestA(c.b.a)
print_NestB(b)
print_NestB(c.b)
print_NestC(c)