public void TestDynamicVisitor() { var ast = Parse("SELECT 3 + 4"); List <int> integers = new List <int>(); var visitor = SQLDynamicVisitor .Default(node => { }) .ForType <IntegerLiteral>(node => integers.Add(int.Parse(node.Value))); visitor.Visit(ast); CollectionAssert.AreEqual(new[] { 3, 4 }, integers); }
public void TestDynamicVisitorWorksWithBaseTypes() { var ast = Parse("SELECT 3 + '4' - NULL"); var literals = new List <string>(); var visitor = SQLDynamicVisitor .Default(node => { }) .ForType <Literal>(node => literals.Add(node.Value)) .ForType <IntegerLiteral>(node => literals.Add(int.Parse(node.Value).ToString())) .ForType <NullLiteral>(node => literals.Add(null)); visitor.Visit(ast); CollectionAssert.AreEqual(new string[] { "3", "4", null }, literals); }