Skip to content

Commit

Permalink
test: refactor test utils
Browse files Browse the repository at this point in the history
  • Loading branch information
alploskov committed Jun 5, 2023
1 parent b7aab0f commit 06e6d34
Show file tree
Hide file tree
Showing 6 changed files with 106 additions and 57 deletions.
56 changes: 0 additions & 56 deletions tests/utils.py

This file was deleted.

27 changes: 27 additions & 0 deletions tests/utils/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from inspect import getsource
from .type_conversion import type_conversion
from .js import JS
from .lua import Lua
from .py import Py


langs = [Py(), JS(), Lua()]

def check_exprs(exprs):
expected_results = list(map(eval, exprs))
for lang in langs:
for i, e in enumerate(exprs):
checked_expr = lang.gen_expr(e)
fact_result = type_conversion(lang.eval(checked_expr))
lang.clear()
assert expected_results[i] == fact_result

def check_func(func):
expected_results = func()
src = getsource(func)
for lang in langs:
target_src = lang.gen_func(src)
lang.load_func(target_src)
fact_result = type_conversion(lang.call_func(func.__name__))
lang.clear()
assert expected_results == fact_result
26 changes: 26 additions & 0 deletions tests/utils/js.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import execjs
from kithon import Transpiler, analogs


class JS:
def __init__(self):
self.runtime = execjs.get()
self.generator = Transpiler(lang='js')

def load_func(self, func: str):
self.runtime = execjs.compile(func)

def call_func(self, name):
return self.eval(analogs.call(self.generator, name).render())

def eval(self, expr: str):
return self.runtime.eval(expr)

def gen_func(self, src):
return self.generator.generate(src, mode='block')

def gen_expr(self, src):
return self.generator.generate(src, mode='eval')

def clear(self):
self.generator.used.clear()
26 changes: 26 additions & 0 deletions tests/utils/lua.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from lupa import LuaRuntime
from kithon import Transpiler, analogs


class Lua:
def __init__(self):
self.runtime = LuaRuntime(unpack_returned_tuples=True)
self.generator = Transpiler(lang='lua')

def load_func(self, func: str):
self.runtime.execute(func)

def call_func(self, name):
return self.eval(analogs.call(self.generator, name).render())

def eval(self, expr: str):
return self.runtime.eval(expr)

def gen_func(self, src):
return self.generator.generate(src, mode='block')

def gen_expr(self, src):
return self.generator.generate(src, mode='eval')

def clear(self):
self.generator.used.clear()
26 changes: 26 additions & 0 deletions tests/utils/py.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from lupa import LuaRuntime
from kithon import Transpiler, analogs


class Py:
def __init__(self):
self.runtime = None
self.generator = Transpiler()

def load_func(self, func: str):
exec(func, globals())

def call_func(self, name):
return eval(analogs.call(self.generator, name).render())

def eval(self, expr: str):
return eval(expr)

def gen_func(self, src):
return self.generator.generate(src, mode='block')

def gen_expr(self, src):
return self.generator.generate(src, mode='eval')

def clear(self):
self.generator.used.clear()
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

lua_table = type(lupa.LuaRuntime().table())

def type_conversion(data, lang=''):
def type_conversion(data):
if isinstance(data, lua_table):
return list(map(type_conversion, data.values()))
return data

0 comments on commit 06e6d34

Please sign in to comment.