blob: 1f7196570c2ec2e829a3aab2da96da9779eaf95d [file] [log] [blame]
Jason Rhinelanderb3f3d792016-07-18 16:43:18 -04001#!/usr/bin/env python
2from __future__ import print_function
3import sys
4sys.path.append('.')
5
6from example import ExampleVirt, runExampleVirt, runExampleVirtVirtual, runExampleVirtBool
Jason Rhinelanderd6c365b2016-08-05 17:44:28 -04007from example import A_Repeat, B_Repeat, C_Repeat, D_Repeat, A_Tpl, B_Tpl, C_Tpl, D_Tpl
Jason Rhinelanderb3f3d792016-07-18 16:43:18 -04008
9class ExtendedExampleVirt(ExampleVirt):
10 def __init__(self, state):
11 super(ExtendedExampleVirt, self).__init__(state + 1)
12 self.data = "Hello world"
13
14 def run(self, value):
15 print('ExtendedExampleVirt::run(%i), calling parent..' % value)
16 return super(ExtendedExampleVirt, self).run(value + 1)
17
18 def run_bool(self):
19 print('ExtendedExampleVirt::run_bool()')
20 return False
21
22 def pure_virtual(self):
23 print('ExtendedExampleVirt::pure_virtual(): %s' % self.data)
24
25
26ex12 = ExampleVirt(10)
27print(runExampleVirt(ex12, 20))
28try:
29 runExampleVirtVirtual(ex12)
30except Exception as e:
31 print("Caught expected exception: " + str(e))
32
33ex12p = ExtendedExampleVirt(10)
34print(runExampleVirt(ex12p, 20))
35print(runExampleVirtBool(ex12p))
36runExampleVirtVirtual(ex12p)
Jason Rhinelander0ca96e22016-08-05 17:02:33 -040037
38sys.stdout.flush()
39
40class VI_AR(A_Repeat):
41 def unlucky_number(self):
42 return 99
Jason Rhinelander0ca96e22016-08-05 17:02:33 -040043class VI_AT(A_Tpl):
44 def unlucky_number(self):
45 return 999
46
47class VI_CR(C_Repeat):
48 def lucky_number(self):
49 return C_Repeat.lucky_number(self) + 1.25
Jason Rhinelander0ca96e22016-08-05 17:02:33 -040050class VI_CT(C_Tpl):
51 pass
52class VI_CCR(VI_CR):
53 def lucky_number(self):
54 return VI_CR.lucky_number(self) * 10
Jason Rhinelander0ca96e22016-08-05 17:02:33 -040055class VI_CCT(VI_CT):
56 def lucky_number(self):
57 return VI_CT.lucky_number(self) * 1000
58
59
60class VI_DR(D_Repeat):
61 def unlucky_number(self):
62 return 123
63 def lucky_number(self):
64 return 42.0
Jason Rhinelander0ca96e22016-08-05 17:02:33 -040065class VI_DT(D_Tpl):
66 def say_something(self, times):
67 print("VI_DT says:" + (' quack' * times))
68 def unlucky_number(self):
69 return 1234
70 def lucky_number(self):
71 return -4.25
72
73classes = [
Jason Rhinelanderd6c365b2016-08-05 17:44:28 -040074 # A_Repeat, A_Tpl, # abstract (they have a pure virtual unlucky_number)
75 VI_AR, VI_AT,
76 B_Repeat, B_Tpl,
77 C_Repeat, C_Tpl,
78 VI_CR, VI_CT, VI_CCR, VI_CCT,
79 D_Repeat, D_Tpl, VI_DR, VI_DT
Jason Rhinelander0ca96e22016-08-05 17:02:33 -040080]
81
82for cl in classes:
83 print("\n%s:" % cl.__name__)
84 obj = cl()
85 obj.say_something(3)
86 print("Unlucky = %d" % obj.unlucky_number())
87 if hasattr(obj, "lucky_number"):
88 print("Lucky = %.2f" % obj.lucky_number())
89