import sys;

from perin_parser.thirdparty.mtool.validate.utilities import report;

def test(graph, actions, stream = sys.stderr):
  n = 0;
  for node in graph.nodes:
    if not isinstance(node.label, str) or len(node.label) == 0:
      n += 1;
      report(graph,
             "missing or invalid label",
             node = node, framework = "EDS", stream = stream);
    message = None;
    if "anchors" in actions:
      if not isinstance(node.anchors, list):
        message = "missing or invalid anchoring";
      elif len(node.anchors) != 1 \
        or ("from" not in node.anchors[0] or "to" not in node.anchors[0]):
        message = "invalid ‘anchors’ value: {}".format(node.anchors);
    if message is not None:
      n += 1;
      report(graph, message,
             node = node, framework = "EDS", stream = stream);
  return n;

