from core.sheerka.Sheerka import Sheerka from core.sheerka.SheerkaOntologyManager import SheerkaOntologyManager from tests.BaseTest import BaseTest class TestUsingMemoryBasedSheerka(BaseTest): sheerka = None context = None root_ontology_name = SheerkaOntologyManager.ROOT_ONTOLOGY_NAME def teardown_method(self, method): # to do after the test if TestUsingMemoryBasedSheerka.sheerka: while TestUsingMemoryBasedSheerka.sheerka.om.current_ontology().name != self.root_ontology_name: TestUsingMemoryBasedSheerka.sheerka.pop_ontology(self.context) @staticmethod def new_sheerka_instance(cache_only): sheerka = Sheerka(cache_only=cache_only) sheerka.initialize("mem://", save_execution_context=False, enable_process_return_values=False, enable_process_rules=False) return sheerka def get_sheerka(self, **kwargs) -> Sheerka: cache_only = kwargs.get("cache_only", True) ontology_name = kwargs.get("ontology", "#unit_test#") or "#unit_test#" if TestUsingMemoryBasedSheerka.sheerka is None: TestUsingMemoryBasedSheerka.sheerka = self.new_sheerka_instance(False) TestUsingMemoryBasedSheerka.context = self.get_context(TestUsingMemoryBasedSheerka.sheerka) self.sheerka.push_ontology(self.context, ontology_name, cache_only=cache_only) return self.sheerka