More pyext tests

pull/335/head
A. R. Shajii 2023-03-30 11:07:01 -04:00
parent cf57b58606
commit 0f1913b1d0
2 changed files with 125 additions and 0 deletions

View File

@ -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})'

View File

@ -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')