Fix bug in conformance checker

This commit is contained in:
Joeri Exelmans 2024-10-08 22:34:49 +02:00
parent e70eae2286
commit b69efc9af0

View file

@ -19,6 +19,12 @@ def exec_then_eval(code, _globals, _locals):
exec(compile(block, '<string>', mode='exec'), _globals, _locals) exec(compile(block, '<string>', mode='exec'), _globals, _locals)
return eval(compile(last, '<string>', mode='eval'), _globals, _locals) return eval(compile(last, '<string>', mode='eval'), _globals, _locals)
def render_conformance_check_result(error_list):
if len(error_list) == 0:
return "OK"
else:
return f"There were {len(error_list)} errors: \n {'\n '.join(error_list)}"
class Conformance: class Conformance:
def __init__(self, state: State, model: UUID, type_model: UUID): def __init__(self, state: State, model: UUID, type_model: UUID):
@ -440,10 +446,9 @@ class Conformance:
for m_name, tm_name in self.type_mapping.items(): for m_name, tm_name in self.type_mapping.items():
code = get_code(tm_name) code = get_code(tm_name)
if code != None: if code != None:
# print('code:', code)
tm_element, = self.bottom.read_outgoing_elements(self.type_model, tm_name) tm_element, = self.bottom.read_outgoing_elements(self.type_model, tm_name)
morphisms = self.bottom.read_incoming_elements(tm_element, "Morphism") m_element, = self.bottom.read_outgoing_elements(self.model, m_name)
morphisms = [m for m in morphisms if m in self.model_names]
for m_element in morphisms:
result = self.evaluate_constraint(code, this=m_element) result = self.evaluate_constraint(code, this=m_element)
description = f"Local constraint of \"{tm_name}\" in \"{m_name}\"" description = f"Local constraint of \"{tm_name}\" in \"{m_name}\""
check_result(result, description) check_result(result, description)