Exemplo n.º 1
0
 /// <summary>
 /// Visits test set options
 /// </summary>
 /// <param name="plan">Test file plan</param>
 /// <param name="testSetPlan">TestSetPlan to visit</param>
 /// <param name="testOptions">TestOptions syntax node</param>
 private void VisitTestOptions(TestFilePlan plan, TestSetPlan testSetPlan, TestOptionsNode testOptions)
 {
     if (testOptions == null)
     {
         return;
     }
     VisitTestOptions(plan, testSetPlan, testOptions, out var nonmi, out var timeout);
     testSetPlan.DisableInterrupt = nonmi ?? false;
     testSetPlan.TimeoutValue     = timeout ?? DEFAULT_TIMEOUT;
 }
 /// <summary>
 /// Visits the test options
 /// </summary>
 /// <param name="line">Line to add the tag for</param>
 /// <param name="context">TestOptionsNode to visit</param>
 /// <param name="lineNo">Current line numer</param>
 /// <param name="collectedSpans">Collection of spancs found</param>
 private void Visit(ITextSnapshotLine line, TestOptionsNode context, int lineNo, List <TagSpan <Z80TestTokenTag> > collectedSpans)
 {
     if (context == null ||
         lineNo < context.Span.StartLine ||
         lineNo > context.Span.EndLine)
     {
         return;
     }
     Visit(line, context.WithKeywordSpan, lineNo, collectedSpans, Z80TestTokenType.Keyword);
     foreach (var option in context.Options)
     {
         Visit(line, option, lineNo, collectedSpans);
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Visit a parse tree produced by <see cref="Z80TestParser.testOptions"/>.
        /// <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 override object VisitTestOptions(Z80TestParser.TestOptionsContext context)
        {
            if (IsInvalidContext(context))
            {
                return(null);
            }
            var node = new TestOptionsNode(context);

            foreach (var toContext in context.testOption())
            {
                node.Options.Add((TestOptionNode)VisitTestOption(toContext));
            }
            return(node);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Visits the test options
 /// </summary>
 /// <param name="line">Line to add the tag for</param>
 /// <param name="context">TestOptionsNode to visit</param>
 /// <param name="lineNo">Current line number</param>
 /// <param name="collectedSpans">Collection of spans found</param>
 private void Visit(ITextSnapshotLine line, TestOptionsNode context, int lineNo,
                    List <ClassificationSpan> collectedSpans)
 {
     if (context == null ||
         lineNo < context.Span.StartLine ||
         lineNo > context.Span.EndLine)
     {
         return;
     }
     Visit(line, context.WithKeywordSpan, lineNo, collectedSpans, _keyword);
     foreach (var option in context.Options)
     {
         Visit(line, option, lineNo, collectedSpans);
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Vistis test set and test node options
        /// </summary>
        /// <param name="plan">Test file plan</param>
        /// <param name="testSetPlan">TestSetPlan to visit</param>
        /// <param name="testOptions">TestOptions syntax node</param>
        /// <param name="disableInterrupt">Disable interrupt flag</param>
        /// <param name="timeout">TIMEOUT value</param>
        private void VisitTestOptions(TestFilePlan plan, TestSetPlan testSetPlan, TestOptionsNode testOptions, out bool disableInterrupt, out int timeout)
        {
            // --- Set default values
            disableInterrupt = false;
            timeout          = 0;
            if (testOptions?.Options == null)
            {
                return;
            }

            // --- Process options
            var interruptModeFound = false;
            var timeoutFound       = false;

            foreach (var option in testOptions.Options)
            {
                if (option is InterruptOptionNodeBase intNode)
                {
                    if (interruptModeFound)
                    {
                        ReportError(Errors.T0005, plan, intNode.Span, "DI or EI");
                        return;
                    }
                    interruptModeFound = true;
                    disableInterrupt   = intNode is DiTestOptionNode;
                }
                else if (option is TimeoutTestOptionNode timeoutNode)
                {
                    if (timeoutFound)
                    {
                        ReportError(Errors.T0005, plan, timeoutNode.Span, "TIMEOUT");
                        return;
                    }
                    timeoutFound = true;
                    var value = Eval(plan, testSetPlan, timeoutNode.Expr);
                    if (value != null)
                    {
                        timeout = (int)value.AsNumber();
                    }
                }
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Vistis test set and test node options
        /// </summary>
        /// <param name="plan">Test file plan</param>
        /// <param name="testSetPlan">TestSetPlan to visit</param>
        /// <param name="testOptions">TestOptions syntax node</param>
        /// <param name="nonmi">NONMI value</param>
        /// <param name="timeout">TIMEOUT value</param>
        private void VisitTestOptions(TestFilePlan plan, TestSetPlan testSetPlan, TestOptionsNode testOptions, out bool?nonmi, out int?timeout)
        {
            // --- Set default values
            nonmi   = null;
            timeout = null;
            if (testOptions?.Options == null)
            {
                return;
            }

            // --- Process options
            var nonmiFound   = false;
            var timeoutFound = false;

            foreach (var option in testOptions.Options)
            {
                if (option is NoNmiTestOptionNode nonmiNode)
                {
                    if (nonmiFound)
                    {
                        ReportError(Errors.T0005, plan, nonmiNode.Span, "NONMI");
                        return;
                    }
                    nonmiFound = true;
                    nonmi      = true;
                }
                else if (option is TimeoutTestOptionNode timeoutNode)
                {
                    if (timeoutFound)
                    {
                        ReportError(Errors.T0005, plan, timeoutNode.Span, "TIMEOUT");
                        return;
                    }
                    timeoutFound = true;
                    var value = Eval(plan, testSetPlan, timeoutNode.Expr);
                    if (value != null)
                    {
                        timeout = (int)value.AsNumber();
                    }
                }
            }
        }