mirror of https://github.com/exaloop/codon.git
More pyext tests
parent
cf57b58606
commit
0f1913b1d0
|
@ -1,5 +1,32 @@
|
|||
print('Hello from Codon')
|
||||
|
||||
def f1(a: float = 1.11, b: float = 2.22):
|
||||
return (a, b)
|
||||
|
||||
def f2():
|
||||
return ({1: 'one'}, {2}, [3])
|
||||
|
||||
def f3(x):
|
||||
return x * 2
|
||||
|
||||
def f4(x):
|
||||
return x
|
||||
|
||||
@overload
|
||||
def f4(a: float = 1.11, b: float = 2.22):
|
||||
return f1(a=a, b=b)
|
||||
|
||||
@overload
|
||||
def f4():
|
||||
return ['f4()']
|
||||
|
||||
@overload
|
||||
def f4(x: str):
|
||||
return x, x
|
||||
|
||||
def f5():
|
||||
pass
|
||||
|
||||
@dataclass(python=True)
|
||||
class Vec:
|
||||
a: float
|
||||
|
@ -277,3 +304,20 @@ class Vec:
|
|||
@property
|
||||
def nd(self):
|
||||
return Vec.d
|
||||
|
||||
def f6(x: float, t: str):
|
||||
return Vec(x, x, t)
|
||||
|
||||
@tuple
|
||||
class Foo:
|
||||
a: List[str]
|
||||
x: Dict[str, int]
|
||||
|
||||
def __new__(a: List[str]) -> Foo:
|
||||
return (a, {s: i for i, s in enumerate(a)})
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.a)
|
||||
|
||||
def __repr__(self):
|
||||
return f'Foo({self.a}, {self.x})'
|
||||
|
|
|
@ -3,6 +3,80 @@ import myext as m
|
|||
def equal(v, a, b, tag):
|
||||
return v.a == a and v.b == b and v.tag == tag
|
||||
|
||||
# functions #
|
||||
#############
|
||||
|
||||
assert m.f1(2.2, 3.3) == (2.2, 3.3)
|
||||
assert m.f1(2.2, 3.3) == (2.2, 3.3)
|
||||
assert m.f1(3.3) == (3.3, 2.22)
|
||||
assert m.f1() == (1.11, 2.22)
|
||||
assert m.f1(a=2.2, b=3.3) == (2.2, 3.3)
|
||||
assert m.f1(2.2, b=3.3) == (2.2, 3.3)
|
||||
assert m.f1(b=3.3, a=2.2) == (2.2, 3.3)
|
||||
assert m.f1(a=2.2) == (2.2, 2.22)
|
||||
assert m.f1(b=3.3) == (1.11, 3.3)
|
||||
|
||||
try:
|
||||
m.f1(1.1, 2.2, 3.3)
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
assert False
|
||||
|
||||
try:
|
||||
m.f1(z=1)
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
assert False
|
||||
|
||||
assert m.f2() == ({1: 'one'}, {2}, [3])
|
||||
|
||||
try:
|
||||
m.f2(1)
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
assert False
|
||||
|
||||
try:
|
||||
m.f2(z=1, y=5)
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
assert False
|
||||
|
||||
assert m.f3(42) == 84
|
||||
assert m.f3(1.5) == 3.0
|
||||
assert m.f3('x') == 'xx'
|
||||
|
||||
try:
|
||||
m.f3(1, 2)
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
assert False
|
||||
|
||||
try:
|
||||
m.f3(a=1, b=2)
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
assert False
|
||||
|
||||
assert m.f4() == ['f4()']
|
||||
assert m.f4(2.2, 3.3) == (2.2, 3.3)
|
||||
assert m.f4(3.3) == (3.3, 2.22)
|
||||
assert m.f4(a=2.2, b=3.3) == (2.2, 3.3)
|
||||
assert m.f4(2.2, b=3.3) == (2.2, 3.3)
|
||||
assert m.f4(b=3.3, a=2.2) == (2.2, 3.3)
|
||||
assert m.f4(a=2.2) == (2.2, 2.22)
|
||||
assert m.f4(b=3.3) == (1.11, 3.3)
|
||||
assert m.f4('foo') == ('foo', 'foo')
|
||||
assert m.f4({1}) == {1}
|
||||
assert m.f5() is None
|
||||
assert equal(m.f6(1.9, 't'), 1.9, 1.9, 't')
|
||||
|
||||
# constructors #
|
||||
################
|
||||
|
||||
|
@ -58,6 +132,13 @@ except:
|
|||
else:
|
||||
assert False
|
||||
|
||||
try:
|
||||
x.foo(1, z=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')
|
||||
|
|
Loading…
Reference in New Issue