public override TestFramework VisitEdge_stmt([NotNull] DOTParser.Edge_stmtContext context)
            {
                TestUnitInfo info = this.Context.TestUnits.Peek();

                if (info != null)
                {
                    var lhs = context.node_id();
                    var rhs = lhs;

                    var edgeRhs = context.edgeRHS();

                    // NOTE Boost Test DOT output only define one edge per edge statement
                    if (edgeRhs.edgeop().Length == 1)
                    {
                        var edgeop = edgeRhs.edgeop()[0];
                        // Ensure that a directed edge '->' token is used
                        if (edgeop.GetToken(DOTLexer.T__7, 0) != null)
                        {
                            rhs = edgeRhs.node_id()[0];
                        }
                    }

                    if ((lhs != rhs) && (rhs != null))
                    {
                        // Identify whether this edge is a constraining edge (i.e. an actual graph edge) or a non-constraining edge
                        bool constraint = !GetKeyValuePairs(context.attr_list()).Any((attribute) => (attribute.Key == "constraint") && (attribute.Value == "false"));

                        // This implies a test dependency
                        if ((lhs.GetText() == info.id) && !constraint)
                        {
                            info.Dependencies.Add(rhs.GetText());
                        }
                        // This implies a test unit relationship
                        else if (rhs.GetText() == info.id)
                        {
                            info.Parents.Add(lhs.GetText());
                        }
                    }
                }

                return(base.VisitEdge_stmt(context));
            }
Пример #2
0
 public override void ExitEdge_stmt(DOTParser.Edge_stmtContext context)
 {
     OnRuleLeave(Rule.EdgeStmt, context.GetText());
     base.ExitEdge_stmt(context);
 }
 /// <summary>
 /// Exit a parse tree produced by <see cref="DOTParser.edge_stmt"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitEdge_stmt([NotNull] DOTParser.Edge_stmtContext context)
 {
 }
Пример #4
0
 public override void EnterEdge_stmt(DOTParser.Edge_stmtContext context)
 {
     OnRuleEnter(Rule.EdgeStmt, context.GetText());
     base.EnterEdge_stmt(context);
 }
 /// <summary>
 /// Visit a parse tree produced by <see cref="DOTParser.edge_stmt"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitEdge_stmt([NotNull] DOTParser.Edge_stmtContext context)
 {
     return(VisitChildren(context));
 }