Commit 657280ca authored by Sergey Bobrov's avatar Sergey Bobrov

Unit тест графа c ветвлением проведен и отлажен

parent 744f1f76
...@@ -42,3 +42,26 @@ def selector_a_positive(data): ...@@ -42,3 +42,26 @@ def selector_a_positive(data):
def true_predicate(data): def true_predicate(data):
return True return True
def process_a(data):
"""Обработка ветки A: умножает a на 2"""
if 'a' not in data:
data['a'] = 0 # Инициализация по умолчанию
data['a'] *= 2
data['processed_by'] = 'A'
def process_b(data):
"""Обработка ветки B: устанавливает b в 10 (вместо добавления)"""
data['b'] += 10
data['processed_by'] = 'B'
def check_condition(data):
"""Предикат для выбора ветки (True - ветка A, False - ветка B)"""
return data.get('value', 0) % 2 == 0 # Безопасное получение value
def branch_selector(data):
"""Селектор ветвления на основе check_condition"""
condition = check_condition(data)
return [condition, not condition]
digraph BRANCHING_TEST {
/ Функции
PROCESS_A [module=test_funcs.simplest, entry_func=process_a]
PROCESS_B [module=test_funcs.simplest, entry_func=process_b]
// Морфизмы
EDGE_A [function=PROCESS_A]
EDGE_B [function=PROCESS_B]
// Граф
__BEGIN__ -> DECISION_POINT
DECISION_POINT -> BRANCH_A [morphism=EDGE_A]
DECISION_POINT -> BRANCH_B [morphism=EDGE_B]
BRANCH_A -> MERGE_POINT
BRANCH_B -> MERGE_POINT
MERGE_POINT -> __END__
}
\ No newline at end of file
...@@ -48,17 +48,17 @@ class TestADOTParser(unittest.TestCase): ...@@ -48,17 +48,17 @@ class TestADOTParser(unittest.TestCase):
graph = self.parser.parse_file(os.path.join(self.test_files_dir, "branching.adot")) graph = self.parser.parse_file(os.path.join(self.test_files_dir, "branching.adot"))
self.assertIsInstance(graph, Graph) self.assertIsInstance(graph, Graph)
# Проверка ветвления A data = {"a": 5, "b": 5}
data = {"condition": True}
result = graph.run(data) result = graph.run(data)
self.assertTrue(result) self.assertTrue(result)
self.assertTrue(data["processed_by_a"]) self.assertEqual(data["a"], 10) # 5 * 2 = 10
self.assertEqual(data["b"], 15)
# Проверка ветвления B data = {"a": 1, "b": 3}
data = {"condition": False}
result = graph.run(data) result = graph.run(data)
self.assertTrue(result) self.assertTrue(result)
self.assertTrue(data["processed_by_b"]) self.assertEqual(data["b"], 13)
self.assertEqual(data["a"], 2)
def test_subgraph_integration(self): def test_subgraph_integration(self):
"""Тест интеграции подграфов""" """Тест интеграции подграфов"""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment