コード例 #1
0
ファイル: FormulaManager.cs プロジェクト: pascalpfeil/ssharp
        private void AddDeepestOnceFormulas()
        {
            var alreadyKnownLabels = FinalStateFormulaLabels.ToArray();

            var onceFormulaCollector = new CollectDeepestOnceFormulasWithCompilableOperandVisitor();

            foreach (var formula in _formulasToCheck)
            {
                onceFormulaCollector.VisitNewTopLevelFormula(formula);
            }
            var deepestOnceFormulas = onceFormulaCollector.DeepestOnceFormulasWithCompilableOperand.ToArray();

            if (deepestOnceFormulas.Length > 0)
            {
                var formulasToObserve = deepestOnceFormulas.Select(formula => formula.Operand).ToArray();

                Func <ObserveFormulasModifier> observeFormulasModifier = () => new ObserveFormulasModifier(alreadyKnownLabels, formulasToObserve);
                _transitionModifierGenerators.Add(observeFormulasModifier);
            }

            foreach (var formula in deepestOnceFormulas)
            {
                Assert.That(formula.Operator == UnaryOperator.Once, "operator of OnceFormula must be Once");
                _finalStateFormulas.Add(formula);
                _labelsOfKnownFormulas.Add(formula.Label);
            }
        }
コード例 #2
0
        public void CollectDeepestOnceFormulasWithCompilableOperandWithNestedTwice()
        {
            var vistor  = new CollectDeepestOnceFormulasWithCompilableOperandVisitor();
            var formula = CreateNestedTwice();

            vistor.VisitNewTopLevelFormula(formula);
            Assert.Equal(1, vistor.DeepestOnceFormulasWithCompilableOperand.Count());
        }
コード例 #3
0
        public void CollectDeepestOnceFormulasWithCompilableOperandWithFinallyConnectedNestedOnce()
        {
            var vistor  = new CollectDeepestOnceFormulasWithCompilableOperandVisitor();
            var formula = CreateFinallyConnectedNestedFormula();

            vistor.VisitNewTopLevelFormula(formula);
            Assert.Equal(2, vistor.DeepestOnceFormulasWithCompilableOperand.Count());
        }