summaryrefslogtreecommitdiff
path: root/Examples/test-suite/python/smart_pointer_const_overload_runme.py
blob: 098e5b4c3403e6845dc87313976daf88af877a54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
from smart_pointer_const_overload import *

CONST_ACCESS = 1
MUTABLE_ACCESS = 2

def test(b, f):
  if f.x != 0:
    raise RuntimeError

  # Test member variable get
  if b.x != 0:
    raise RuntimeError
    
  if f.access != CONST_ACCESS:
    raise RuntimeError

  # Test member variable set
  b.x = 1

  if f.x != 1:
    raise RuntimeError
  
  if f.access != MUTABLE_ACCESS:
    raise RuntimeError
  
  # Test const method
  if b.getx() != 1:
    raise RuntimeError
  
  if f.access != CONST_ACCESS:
    raise RuntimeError
  
  # Test mutable method
  b.setx(2)

  if f.x != 2:
    raise RuntimeError
  
  if f.access != MUTABLE_ACCESS:
    raise RuntimeError
  
  # Test extended const method
  if b.getx2() != 2:
    raise RuntimeError
  
  if f.access != CONST_ACCESS:
    raise RuntimeError
  
  # Test extended mutable method
  b.setx2(3)

  if f.x != 3:
    raise RuntimeError
  
  if f.access != MUTABLE_ACCESS:
    raise RuntimeError
    
  # Test static method
  b.statMethod()

  if f.access != CONST_ACCESS:
    raise RuntimeError

  # Test const member
  f.access = MUTABLE_ACCESS
  
  if b.y != 0:
    raise RuntimeError
    
  if f.access != CONST_ACCESS:
    raise RuntimeError
  
  # Test get through mutable pointer to const member
  f.access = MUTABLE_ACCESS
  
  if get_int(b.yp) != 0:
    raise RuntimeError
    
  if f.access != CONST_ACCESS:
    raise RuntimeError

  # Test get through const pointer to mutable member
  f.x = 4
  f.access = MUTABLE_ACCESS
  
  if get_int(b.xp) != 4:
    raise RuntimeError
    
  if f.access != CONST_ACCESS:
    raise RuntimeError
    
  # Test set through const pointer to mutable member
  f.access = MUTABLE_ACCESS
  set_int(b.xp, 5)
  
  if f.x != 5:
    raise RuntimeError
  
  if f.access != CONST_ACCESS:
    raise RuntimeError

  # Test set pointer to const member
  b.yp = new_int(6)
  
  if f.y != 0:
    raise RuntimeError
  
  if get_int(f.yp) != 6:
    raise RuntimeError
  
  if f.access != MUTABLE_ACCESS:
    raise RuntimeError
    
  delete_int(f.yp);

f = Foo()
b = Bar(f)

f2 = Foo()
b2 = Bar2(f2)

test(b, f)
test(b2, f2)