mirror of
https://github.com/exaloop/codon.git
synced 2025-06-03 15:03:52 +08:00
112 lines
1.9 KiB
Python
112 lines
1.9 KiB
Python
|
import myext as m
|
||
|
|
||
|
def equal(v, a, b, tag):
|
||
|
return v.a == a and v.b == b and v.tag == tag
|
||
|
|
||
|
# constructors #
|
||
|
################
|
||
|
|
||
|
x = m.Vec(3.14, 4.2, 'x')
|
||
|
y = m.Vec(100, 1000, tag='y')
|
||
|
z = m.Vec(b=2.2, a=1.1)
|
||
|
s = m.Vec(10)
|
||
|
t = m.Vec(b=11)
|
||
|
|
||
|
assert equal(x, 3.14, 4.2, 'x')
|
||
|
assert equal(y, 100, 1000, 'y')
|
||
|
assert equal(z, 1.1, 2.2, 'v0')
|
||
|
assert equal(s, 10, 0.0, 'v1')
|
||
|
assert equal(t, 0.0, 11, 'v2')
|
||
|
|
||
|
try:
|
||
|
m.Vec(tag=10, a=1, b=2)
|
||
|
except:
|
||
|
pass
|
||
|
else:
|
||
|
assert False
|
||
|
|
||
|
# to-str #
|
||
|
##########
|
||
|
|
||
|
assert str(x) == 'x: <3.14, 4.2>'
|
||
|
assert repr(x) == "Vec(3.14, 4.2, 'x')"
|
||
|
|
||
|
|
||
|
# methods #
|
||
|
###########
|
||
|
|
||
|
assert x.foo(2.2, 3.3) == (3.14, 2.2, 3.3)
|
||
|
assert y.foo(3.3) == (100, 3.3, 2.22)
|
||
|
assert z.foo() == (1.1, 1.11, 2.22)
|
||
|
assert x.foo(a=2.2, b=3.3) == (3.14, 2.2, 3.3)
|
||
|
assert x.foo(2.2, b=3.3) == (3.14, 2.2, 3.3)
|
||
|
assert x.foo(b=3.3, a=2.2) == (3.14, 2.2, 3.3)
|
||
|
assert x.foo(a=2.2) == (3.14, 2.2, 2.22)
|
||
|
assert x.foo(b=3.3) == (3.14, 1.11, 3.3)
|
||
|
|
||
|
try:
|
||
|
x.foo(1, a=1)
|
||
|
except:
|
||
|
pass
|
||
|
else:
|
||
|
assert False
|
||
|
|
||
|
try:
|
||
|
x.foo(1, 2, b=2)
|
||
|
except:
|
||
|
pass
|
||
|
else:
|
||
|
assert False
|
||
|
|
||
|
assert equal(x.bar(), 3.14, 4.2, 'x')
|
||
|
assert equal(y.bar(), 100, 1000, 'y')
|
||
|
assert equal(z.bar(), 1.1, 2.2, 'v0')
|
||
|
assert equal(s.bar(), 10, 0.0, 'v1')
|
||
|
assert equal(t.bar(), 0.0, 11, 'v2')
|
||
|
|
||
|
try:
|
||
|
x.bar(1)
|
||
|
except:
|
||
|
pass
|
||
|
else:
|
||
|
assert False
|
||
|
|
||
|
try:
|
||
|
x.bar(z=1)
|
||
|
except:
|
||
|
pass
|
||
|
else:
|
||
|
assert False
|
||
|
|
||
|
assert m.Vec.baz(2.2, 3.3) == (2.2, 3.3)
|
||
|
assert x.baz(2.2, 3.3) == (2.2, 3.3)
|
||
|
assert m.Vec.baz(3.3) == (3.3, 2.22)
|
||
|
assert m.Vec.baz() == (1.11, 2.22)
|
||
|
assert m.Vec.baz(a=2.2, b=3.3) == (2.2, 3.3)
|
||
|
assert m.Vec.baz(2.2, b=3.3) == (2.2, 3.3)
|
||
|
assert m.Vec.baz(b=3.3, a=2.2) == (2.2, 3.3)
|
||
|
assert m.Vec.baz(a=2.2) == (2.2, 2.22)
|
||
|
assert m.Vec.baz(b=3.3) == (1.11, 3.3)
|
||
|
|
||
|
try:
|
||
|
m.Vec.baz(1, a=1)
|
||
|
except:
|
||
|
pass
|
||
|
else:
|
||
|
assert False
|
||
|
|
||
|
try:
|
||
|
m.Vec.baz(1, 2, b=2)
|
||
|
except:
|
||
|
pass
|
||
|
else:
|
||
|
assert False
|
||
|
|
||
|
assert m.Vec.nop() == 'nop'
|
||
|
assert x.nop() == 'nop'
|
||
|
|
||
|
# magics #
|
||
|
##########
|
||
|
|
||
|
|