Source code for est.tests.test_ewoks

import os
import xml.etree.ElementTree as ET
import pytest

try:
    import PyMca5
except ImportError:
    PyMca5 = None

try:
    import larch
except ImportError:
    larch = None

try:
    import Orange
except ImportError:
    Orange = None


from ewoksorange.bindings import ows_to_ewoks, ewoks_to_ows
from ewokscore.graph import TaskGraph
from ewokscore.graph.analysis import start_nodes


[docs] @pytest.mark.skipif(Orange is None, reason="Orange3 is not installed") # data converter @pytest.mark.skipif(PyMca5 is None, reason="Pymca5 is not installed") def test_orange_graph_pymca(example_pymca, tmpdir): """test conversion of a workflow based on pymca to ewoks graph from orange to ewoks and from ewoks to orange""" # step 1: from ows to ewoks graph graph = ows_to_ewoks(example_pymca) assert isinstance(graph, TaskGraph) assert len(start_nodes(graph.graph)) == 1 assert len(graph.graph.edges) == 5 # step 2: from generated ewoks graph to orange destination = str(tmpdir / "output_pymca_examples.ows") ewoks_to_ows(graph=graph, destination=destination) assert os.path.exists(destination) # insure links and nodes are defined tree = ET.parse(destination) root = tree.getroot() children_tags = {elmt.tag: elmt for elmt in root} # test root element assert "nodes" in children_tags assert "links" in children_tags assert "node_properties" in children_tags # check links links = [elmt for elmt in children_tags["links"]] links_by_id = {link.get("id"): _get_link_info(link) for link in links} assert len(links_by_id) == 5
[docs] @pytest.mark.skipif(larch is None, reason="larch is not installed") def test_orange_graph_larch(example_larch, tmpdir): """test conversion of a workflow based on larch to ewoks graph from orange to ewoks and from ewoks to orange""" # step 1: from ows to ewoks graph graph = ows_to_ewoks(example_larch) assert isinstance(graph, TaskGraph) assert len(start_nodes(graph.graph)) == 1 assert len(graph.graph.edges) == 4 # step 2: from generated ewoks graph to orange destination = str(tmpdir / "output_larch_examples.ows") ewoks_to_ows(graph=graph, destination=destination) assert os.path.exists(destination) # insure links and nodes are defined tree = ET.parse(destination) root = tree.getroot() children_tags = {elmt.tag: elmt for elmt in root} # test root element assert "nodes" in children_tags assert "links" in children_tags assert "node_properties" in children_tags # check links links = [elmt for elmt in children_tags["links"]] links_by_id = {link.get("id"): _get_link_info(link) for link in links} assert len(links_by_id) == 4
def _get_link_info(link_node): return ( link_node.get("sink_channel"), link_node.get("sink_node_id"), link_node.get("source_channel"), link_node.get("source_channel_id"), )