forked from M-Labs/nac3
standalone: add tests for polymorphism
This commit is contained in:
parent
2c88924ff7
commit
15e62f467e
|
@ -10,23 +10,58 @@ class A:
|
||||||
def __init__(self, a: int32):
|
def __init__(self, a: int32):
|
||||||
self.a = a
|
self.a = a
|
||||||
|
|
||||||
def f1(self):
|
def output_all_fields(self):
|
||||||
self.f2()
|
|
||||||
|
|
||||||
def f2(self):
|
|
||||||
output_int32(self.a)
|
output_int32(self.a)
|
||||||
|
|
||||||
|
def set_a(self, a: int32):
|
||||||
|
self.a = a
|
||||||
|
|
||||||
class B(A):
|
class B(A):
|
||||||
b: int32
|
b: int32
|
||||||
|
|
||||||
def __init__(self, b: int32):
|
def __init__(self, b: int32):
|
||||||
self.a = b + 1
|
A.__init__(self, b + 1)
|
||||||
|
self.set_b(b)
|
||||||
|
|
||||||
|
def output_parent_fields(self):
|
||||||
|
A.output_all_fields(self)
|
||||||
|
|
||||||
|
def output_all_fields(self):
|
||||||
|
A.output_all_fields(self)
|
||||||
|
output_int32(self.b)
|
||||||
|
|
||||||
|
def set_b(self, b: int32):
|
||||||
self.b = b
|
self.b = b
|
||||||
|
|
||||||
|
class C(B):
|
||||||
|
c: int32
|
||||||
|
|
||||||
|
def __init__(self, c: int32):
|
||||||
|
B.__init__(self, c + 1)
|
||||||
|
self.c = c
|
||||||
|
|
||||||
|
def output_parent_fields(self):
|
||||||
|
B.output_all_fields(self)
|
||||||
|
|
||||||
|
def output_all_fields(self):
|
||||||
|
B.output_all_fields(self)
|
||||||
|
output_int32(self.c)
|
||||||
|
|
||||||
|
def set_c(self, c: int32):
|
||||||
|
self.c = c
|
||||||
|
|
||||||
def run() -> int32:
|
def run() -> int32:
|
||||||
aaa = A(5)
|
ccc = C(10)
|
||||||
bbb = B(2)
|
ccc.output_all_fields()
|
||||||
aaa.f1()
|
ccc.set_a(1)
|
||||||
bbb.f1()
|
ccc.set_b(2)
|
||||||
|
ccc.set_c(3)
|
||||||
|
ccc.output_all_fields()
|
||||||
|
|
||||||
|
bbb = B(10)
|
||||||
|
bbb.set_a(9)
|
||||||
|
bbb.set_b(8)
|
||||||
|
bbb.output_all_fields()
|
||||||
|
ccc.output_all_fields()
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
Loading…
Reference in New Issue