82 lines
1.8 KiB
Python
82 lines
1.8 KiB
Python
"""Test simple transpiler."""
|
|
|
|
import ast
|
|
import pytest
|
|
import sys
|
|
sys.path.insert(0, "..")
|
|
from tampy.transpiler import SimpleTranspiler
|
|
|
|
|
|
def test_simple_transpile():
|
|
"""Test basic transpilation."""
|
|
transpiler = SimpleTranspiler()
|
|
code = "x = 1"
|
|
result = transpiler.transpile(code)
|
|
assert "x = 1" in result
|
|
|
|
|
|
def test_function_transpile():
|
|
"""Test function transpilation."""
|
|
transpiler = SimpleTranspiler()
|
|
code = "def foo(): return 1"
|
|
result = transpiler.transpile(code)
|
|
assert "def foo()" in result
|
|
|
|
|
|
def test_if_transpile():
|
|
"""Test if statement transpilation."""
|
|
transpiler = SimpleTranspiler()
|
|
code = "if True: pass"
|
|
result = transpiler.transpile(code)
|
|
assert "if True:" in result
|
|
|
|
|
|
def test_for_transpile():
|
|
"""Test for loop transpilation."""
|
|
transpiler = SimpleTranspiler()
|
|
code = "for i in range(10): pass"
|
|
result = transpiler.transpile(code)
|
|
assert "for i in range(10):" in result
|
|
|
|
|
|
def test_class_transpile():
|
|
"""Test class transpilation."""
|
|
transpiler = SimpleTranspiler()
|
|
code = "class Foo: pass"
|
|
result = transpiler.transpile(code)
|
|
assert "class Foo:" in result
|
|
|
|
|
|
def test_import_transpile():
|
|
"""Test import transpilation."""
|
|
transpiler = SimpleTranspiler()
|
|
code = "import sys"
|
|
result = transpiler.transpile(code)
|
|
assert "import sys" in result
|
|
|
|
|
|
def test_roundtrip():
|
|
"""Test parsing and regenerating code."""
|
|
transpiler = SimpleTranspiler()
|
|
|
|
code = """
|
|
x = 1
|
|
y = 2
|
|
if x > y:
|
|
print(x)
|
|
"""
|
|
result = transpiler.transpile(code)
|
|
assert "x = 1" in result
|
|
assert "if" in result
|
|
|
|
|
|
if __name__ == "__main__":
|
|
test_simple_transpile()
|
|
test_function_transpile()
|
|
test_if_transpile()
|
|
test_for_transpile()
|
|
test_class_transpile()
|
|
test_import_transpile()
|
|
test_roundtrip()
|
|
print("All tests passed")
|