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') 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) @dataclass(python=True)
class Vec: class Vec:
a: float a: float
@ -277,3 +304,20 @@ class Vec:
@property @property
def nd(self): def nd(self):
return Vec.d 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): def equal(v, a, b, tag):
return v.a == a and v.b == b and v.tag == 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 # # constructors #
################ ################
@ -58,6 +132,13 @@ except:
else: else:
assert False assert False
try:
x.foo(1, z=2)
except:
pass
else:
assert False
assert equal(x.bar(), 3.14, 4.2, 'x') assert equal(x.bar(), 3.14, 4.2, 'x')
assert equal(y.bar(), 100, 1000, 'y') assert equal(y.bar(), 100, 1000, 'y')
assert equal(z.bar(), 1.1, 2.2, 'v0') assert equal(z.bar(), 1.1, 2.2, 'v0')