From 2a8b7d559ce33c5fd623e8d6c81903d6c6f1fe24 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Tue, 16 Jun 2026 14:36:06 +0200 Subject: [PATCH] tests: add simple gen test --- tests/cases/generator/01_simple_types.midas | 14 ++++ tests/cases/generator/01_simple_types.py | 5 ++ .../generator/01_simple_types.py.ref.txt | 79 +++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 tests/cases/generator/01_simple_types.midas create mode 100644 tests/cases/generator/01_simple_types.py create mode 100644 tests/cases/generator/01_simple_types.py.ref.txt diff --git a/tests/cases/generator/01_simple_types.midas b/tests/cases/generator/01_simple_types.midas new file mode 100644 index 0000000..ff4edb1 --- /dev/null +++ b/tests/cases/generator/01_simple_types.midas @@ -0,0 +1,14 @@ +type Meter = float +type Second = float +type MeterPerSecond = float + +extend Meter { + def __add__: fn(Meter, /) -> Meter + def __sub__: fn(Meter, /) -> Meter + def __truediv__: fn(Second, /) -> MeterPerSecond +} + +extend Second { + def __add__: fn(Second, /) -> Second + def __sub__: fn(Second, /) -> Second +} diff --git a/tests/cases/generator/01_simple_types.py b/tests/cases/generator/01_simple_types.py new file mode 100644 index 0000000..5d6b399 --- /dev/null +++ b/tests/cases/generator/01_simple_types.py @@ -0,0 +1,5 @@ +from midas import cast, Meter, Second + +distance: Meter = cast(Meter, 123.45) +time: Second = cast(Second, 6.7) +speed = distance / time diff --git a/tests/cases/generator/01_simple_types.py.ref.txt b/tests/cases/generator/01_simple_types.py.ref.txt new file mode 100644 index 0000000..aa5f964 --- /dev/null +++ b/tests/cases/generator/01_simple_types.py.ref.txt @@ -0,0 +1,79 @@ +Module( + body=[ + ImportFrom( + module='midas', + names=[ + alias(name='cast'), + alias(name='Meter'), + alias(name='Second')], + level=0), + Assign( + targets=[ + Name(id='__midas_alias_0__')], + value=Constant(value=123.45)), + Assert( + test=Call( + func=Name(id='isinstance'), + args=[ + Name(id='__midas_alias_0__'), + Name(id='float')], + keywords=[]), + msg=JoinedStr( + values=[ + Constant(value='01_simple_types.py:L3:19: CastError: Cannot cast '), + FormattedValue( + value=Attribute( + value=Call( + func=Name(id='type'), + args=[ + Name(id='__midas_alias_0__')], + keywords=[]), + attr='__name__'), + conversion=-1), + Constant(value=' to float')])), + Assign( + targets=[ + Name(id='distance')], + value=Name(id='__midas_alias_0__')), + Delete( + targets=[ + Name(id='__midas_alias_0__')]), + Assign( + targets=[ + Name(id='__midas_alias_1__')], + value=Constant(value=6.7)), + Assert( + test=Call( + func=Name(id='isinstance'), + args=[ + Name(id='__midas_alias_1__'), + Name(id='float')], + keywords=[]), + msg=JoinedStr( + values=[ + Constant(value='01_simple_types.py:L4:16: CastError: Cannot cast '), + FormattedValue( + value=Attribute( + value=Call( + func=Name(id='type'), + args=[ + Name(id='__midas_alias_1__')], + keywords=[]), + attr='__name__'), + conversion=-1), + Constant(value=' to float')])), + Assign( + targets=[ + Name(id='time')], + value=Name(id='__midas_alias_1__')), + Delete( + targets=[ + Name(id='__midas_alias_1__')]), + Assign( + targets=[ + Name(id='speed')], + value=BinOp( + left=Name(id='distance'), + op=Div(), + right=Name(id='time')))], + type_ignores=[]) \ No newline at end of file