File: li_attribute_runme.py

package info (click to toggle)
swig 4.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 45,980 kB
  • sloc: cpp: 54,284; ansic: 29,022; java: 17,595; python: 12,734; cs: 10,421; ruby: 7,263; yacc: 6,501; makefile: 5,860; javascript: 5,538; sh: 5,422; perl: 4,246; php: 3,733; ml: 2,198; tcl: 2,015; lisp: 1,448; xml: 115
file content (84 lines) | stat: -rw-r--r-- 2,119 bytes parent folder | download | duplicates (3)
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
# Ported to C# li_attribute_runme.cs

import li_attribute

aa = li_attribute.A(1, 2, 3)

if aa.a != 1:
    raise RuntimeError
aa.a = 3
if aa.a != 3:
    raise RuntimeError("aa.a: {}".format(aa.a))

if aa.b != 2:
    raise RuntimeError("aa.b: {}".format(aa.b))
aa.b = 5
if aa.b != 5:
    raise RuntimeError

if aa.d != aa.b:
    raise RuntimeError

if aa.c != 3:
    raise RuntimeError
#aa.c = 5
# if aa.c != 3:
#  raise RuntimeError

pi = li_attribute.Param_i(7)
if pi.value != 7:
    raise RuntimeError

pi.value = 3
if pi.value != 3:
    raise RuntimeError

b = li_attribute.B(aa)

if b.a.c != 3:
    raise RuntimeError

# class/struct attribute with get/set methods using return/pass by reference
myFoo = li_attribute.MyFoo()
myFoo.x = 8
myClass = li_attribute.MyClass()
myClass.Foo = myFoo
if myClass.Foo.x != 8:
    raise RuntimeError
myClass.Foo2 = myFoo
if myClass.Foo2.x != 8:
    raise RuntimeError

# class/struct attribute with get/set methods using return/pass by value
myClassVal = li_attribute.MyClassVal()
if myClassVal.ReadWriteFoo.x != -1:
    raise RuntimeError
if myClassVal.ReadOnlyFoo.x != -1:
    raise RuntimeError
myClassVal.ReadWriteFoo = myFoo
if myClassVal.ReadWriteFoo.x != 8:
    raise RuntimeError
if myClassVal.ReadOnlyFoo.x != 8:
    raise RuntimeError

# string attribute with get/set methods using return/pass by value
myStringyClass = li_attribute.MyStringyClass("initial string")
if myStringyClass.ReadWriteString != "initial string":
    raise RuntimeError
if myStringyClass.ReadOnlyString != "initial string":
    raise RuntimeError
myStringyClass.ReadWriteString = "changed string"
if myStringyClass.ReadWriteString != "changed string":
    raise RuntimeError
if myStringyClass.ReadOnlyString != "changed string":
    raise RuntimeError

# Check a proper AttributeError is raised for non-existent attributes, old versions used to raise unhelpful error:
# AttributeError: type object 'object' has no attribute '__getattr__'
try:
    x = myFoo.does_not_exist
    raise RuntimeError
except AttributeError as e:
    if str(e).find("does_not_exist") == -1:
        raise RuntimeError