Ejemplo n.º 1
0
        public void ShouldObserveSubstitutionsWithoutVariables()
        {
            // Arrange
            var             testDatabase = TestUtilities.LoadStatements("0; 0 => inc(0);");
            TermReplacement replacement  = null;

            testDatabase.Writer.SetTermReplacementObserver(r => replacement = r);

            // Act
            testDatabase.ExecuteRewriteRules(2);

            // Assert
            Assert.True(StringComparer.InvariantCulture.Equals("inc(0)", replacement.OriginalRootTerm.ToSourceCode(testDatabase)));
            Assert.True(StringComparer.InvariantCulture.Equals("inc(inc(0))", replacement.NewRootTerm.ToSourceCode(testDatabase)));
            Assert.Equal(1, replacement.RewriteIteration);
            Assert.Equal(TermReplacementType.RewriteRule, replacement.ReplacementType);
            Assert.False(replacement.IsDelete);
        }
Ejemplo n.º 2
0
        public void ShouldObserveTermEvaluatorDelete()
        {
            // Arrange
            var             testDatabase = TestUtilities.LoadStatements("1;");
            TermReplacement replacement  = null;

            testDatabase.Writer.SetTermReplacementObserver(r => replacement = r);
            testDatabase.Writer.SetEvaluator("1", SymbolType.Number, (input, database) => null);

            // Act
            testDatabase.ExecuteRewriteRules();

            // Assert
            Assert.True(StringComparer.InvariantCulture.Equals("1", replacement.OriginalRootTerm.ToSourceCode(testDatabase)));
            Assert.Null(replacement.NewRootTerm);
            Assert.Equal(0, replacement.RewriteIteration);
            Assert.Equal(TermReplacementType.TermEvaluator, replacement.ReplacementType);
            Assert.True(replacement.IsDelete);
        }