Skip to content
Snippets Groups Projects
Commit 62f421c4 authored by Jacob Wahlman's avatar Jacob Wahlman :ok_hand:
Browse files

added tests for recipes and definition

parent 4c4164ed
No related branches found
No related tags found
1 merge request!33Resolve "Load/Save SFG to file"
Pipeline #14092 failed
......@@ -54,3 +54,14 @@ def load_structure(_path: str) -> AbstractOperation:
print("Unexpected error occured while loading structure: ", e)
return None
def load_recipe(module: str) -> None:
"""Given the module name or the path to a module, import the module and let it evaluate it's content.
Returns None as the content from the module will be added to the namespace.
This runs .py scripts inline by importing them, it currently does no checks for security measure.
Arguments:
module: The path or name of the module to import from.
"""
pass
......@@ -8,7 +8,7 @@ from string import ascii_lowercase
import pytest
from b_asic import SFG, Output, load_structure, save_structure
from b_asic import SFG, Output, load_structure, save_structure, load_recipe
class TestSaveStructures:
......@@ -50,4 +50,38 @@ class TestSaveStructures:
_path = load_structure(_path=_invalid_path)
assert _path is None
\ No newline at end of file
def test_load_recipe_file(self):
# Create a file that doesn't exist
_file = "".join(choice(ascii_lowercase) for _ in range(4)) + ".py"
while path.exists(path.join(getcwd(), _file)):
_file = "".join(choice(ascii_lowercase) for _ in range(4)) + ".py"
try:
with open(_file, "w+") as handle:
# The string is indented that way so the file is properly indented, .strip() did not work idk why
handle.write(
"""
from b_asic import SFG, Output, Addition, Constant
sfg = SFG(outputs=[Output(Addition(Addition(Constant(2), Constant(3)), Addition(Constant(4), Constant(5))))])
"""
)
except Exception as e:
assert False, f"Could not create file: {e}"
# Not defined yet
with pytest.raises(NameError):
sfg.evaluate() == 14
load_recipe(_file)
assert sfg.evaluate() == 14
def test_load_invalid_recipe_file(self):
_file = "".join(choice(ascii_lowercase) for _ in range(4)) + ".py"
while path.exists(path.join(getcwd(), _file)):
_file = "".join(choice(ascii_lowercase) for _ in range(4)) + ".py"
load_recipe(_file)
with pytest.raises(NameError):
assert sfg.evaluate() == 14
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment