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); }
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); }