Commit d151f725 authored by Sergey Bobrov's avatar Sergey Bobrov

Added verification of a trivial graph for reuse

parent 4a819403
...@@ -2,3 +2,4 @@ ...@@ -2,3 +2,4 @@
config_research.json config_research.json
*.log *.log
__pycache__ __pycache__
/venv/
...@@ -7,18 +7,14 @@ from comsdk.edge import Edge ...@@ -7,18 +7,14 @@ from comsdk.edge import Edge
class Params(): class Params():
__slots__=(
'module', __slots__ = (
'entry_func', 'module', 'entry_func', 'predicate', 'selector', 'function',
'predicate', 'morphism', 'parallelism', 'comment', 'order', 'subgraph',
'selector', 'keys_mapping', 'executable_parameters', 'connection_data',
'function', 'preprocessor', 'postprocessor', 'edge_index', 'config_section'
'morphism',
'parallelism',
'comment',
'order',
'subgraph'
) )
def __init__(self): def __init__(self):
for slot in self.__slots__: for slot in self.__slots__:
setattr(self, slot, None) setattr(self, slot, None)
......
digraph CYCLIC {
// Функции и предикаты
INC [module="math_ops", entry_func="increment"]
CHECK [module="checks", entry_func="less_than_3"]
MORPH_LOOP [predicate=CHECK, function=INC]
MORPH_EXIT [function=INC]
// Топология с циклом
__BEGIN__ -> LOOP [edge_index=0]
LOOP -> LOOP [morphism=MORPH_LOOP, edge_index=1]
LOOP -> __END__ [morphism=MORPH_EXIT, edge_index=2]
}
\ No newline at end of file
digraph TRIVIAL {
// Объявление функций
FUNC [module=test_funcs.simplest, entry_func=increment_a_edge]
PRED [module=test_funcs.simplest, entry_func="always_true"]
MORPH [predicate=PRED, function=FUNC, comment="Basic increment"]
// Топология
__BEGIN__ -> STEP1 [morphism=MORPH, edge_index=0]
STEP1 -> STEP2 [morphism=MORPH, edge_index=1]
STEP2 -> __END__ [morphism=MORPH, edge_index=2]
}
\ No newline at end of file
...@@ -13,18 +13,24 @@ class ParserGoodCheck(unittest.TestCase): ...@@ -13,18 +13,24 @@ class ParserGoodCheck(unittest.TestCase):
def test_trivial_graph(self): def test_trivial_graph(self):
parsr = Parser() parsr = Parser()
gr = parsr.parse_file("./adot/trivial.adot")
# Проверка загрузки файла
self.assertTrue(os.path.exists("./adot/trivial_v2.adot"))
gr = parsr.parse_file("./adot/trivial_v2.adot")
# Основной сценарий
data = {"a": 1} data = {"a": 1}
try: gr.run(data)
gr.run(data)
finally:
# Явный вызов сборщика мусора для очистки ресурсов
gc.collect()
self.assertEqual(data["a"], 4) self.assertEqual(data["a"], 4)
# Проверка повторного использования
data = {"a": 4}
gr.run(data)
self.assertEqual(data["a"], 7)
def test_branching_graph(self): def test_branching_graph(self):
parsr = Parser() parsr = Parser()
gr = parsr.parse_file("./tests/adot/branching.adot") gr = parsr.parse_file("./adot/branching.adot")
data = {"a": 1, "b": 1} data = {"a": 1, "b": 1}
gr.run(data) gr.run(data)
self.assertEqual(data["a"], 4) self.assertEqual(data["a"], 4)
...@@ -32,7 +38,7 @@ class ParserGoodCheck(unittest.TestCase): ...@@ -32,7 +38,7 @@ class ParserGoodCheck(unittest.TestCase):
def test_cycled_graph(self): def test_cycled_graph(self):
parsr = Parser() parsr = Parser()
gr = parsr.parse_file("./tests/adot/cycled.adot") gr = parsr.parse_file("./adot/cycled.adot")
data = {"a": 10} data = {"a": 10}
gr.run(data) gr.run(data)
self.assertEqual(data["a"], 0) self.assertEqual(data["a"], 0)
......
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