""" B-ASIC test suite for load/save datastructures. """ from os import getcwd, path from random import choice from string import ascii_lowercase import pytest from b_asic import SFG, Output, load_structure, save_structure class TestSaveStructures: def test_save_sfg(self, large_operation_tree): sfg = SFG(outputs=[Output(large_operation_tree)]) _path = save_structure(sfg) assert _path is not None assert path.isfile(_path) def test_load_sfg(self, large_operation_tree): sfg = SFG(outputs=[Output(large_operation_tree)]) _path = save_structure(sfg) _sfg = load_structure(_path) assert isinstance(_sfg, SFG) assert sorted([comp.type_name for comp in _sfg.components]) == sorted([comp.type_name for comp in sfg.components]) assert sfg.evaluate() == _sfg.evaluate() def test_save_invalid_path(self, large_operation_tree): sfg = SFG(outputs=[Output(large_operation_tree)]) _folder = "".join(choice(ascii_lowercase) for _ in range(4)) while path.exists(path.join(getcwd(), _folder)): _folder = "".join(choice(ascii_lowercase) for _ in range(4)) _invalid_path = path.join(getcwd(), _folder, "cool.pickle") _path = save_structure(sfg, _path=_invalid_path) assert _path is None def test_load_invalid_path(self, large_operation_tree): _folder = "".join(choice(ascii_lowercase) for _ in range(4)) while path.exists(path.join(getcwd(), _folder)): _folder = "".join(choice(ascii_lowercase) for _ in range(4)) _invalid_path = path.join(getcwd(), _folder, "cool.pickle") _path = load_structure(_path=_invalid_path) assert _path is None