/
dAshkova
/
luna_CoDeSys
Обзор
Документация
Войти
/
dAshkova
/
luna_CoDeSys
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
test_parser.py
67 строк
2 KB
parovoZZ
первый коммит
06 мар 2026, 09:52
06 мар 2026, 09:52
c5ecee0
Код
Авторство
О чём код?
# -*- coding: utf-8 -*- import json import parser # --- MOCK ОБЪЕКТЫ (Эмуляция CODESYS API) --- class MockObject: def __init__(self, name, node_type="POU"): self.name = name self.node_type = node_type self.content = "" self.declaration = "" def get_name(self): return self.name def set_text_content(self, text): self.content = text print("[MOCK] Текст обновлен в {0}".format(self.name)) def set_declaration_text(self, text): self.declaration = text print("[MOCK] Декларация обновлена в {0}".format(self.name)) def remove(self): print("[MOCK] ОБЪЕКТ {0} УДАЛЕН".format(self.name)) class MockProject: def __init__(self): # Имитируем дерево проекта self.objects = { "PLC_PRG": MockObject("PLC_PRG"), "FB_Motor.Calculate": MockObject("Calculate", "METHOD") } def find(self, path, recursive=True): print("[MOCK] Поиск объекта по пути: {0}".format(path)) return self.objects.get(path) def save(self): print("[MOCK] ПРОЕКТ СОХРАНЕН") # --- ТЕСТОВЫЙ ЗАПУСК --- def run_test(): mock_proj = MockProject() ast_handler = parser.ASTParser(mock_proj) # Тест 1: Обновление существующего метода test_json_update = { "path": "FB_Motor.Calculate", "type": "METHOD", "action": "update", "declaration": "METHOD Calculate : BOOL", "implementation": "Calculate := TRUE;" } print("\n--- TEST: UPDATE ---") ast_handler.sync_node(test_json_update) # Тест 2: Удаление объекта test_json_delete = { "path": "PLC_PRG", "action": "delete" } print("\n--- TEST: DELETE ---") ast_handler.sync_node(test_json_delete) if __name__ == "__main__": run_test()