public void Parse1()
        {
            XElement el = XElement.Parse(@"<f>SELECT [System.Id], [System.WorkItemType], [System.AssignedTo], [System.CreatedBy], [Microsoft.VSTS.Common.Priority], [System.Title], [System.Description] 
FROM WorkItems 
WHERE 
    [System.TeamProject] = @project 
AND [System.State] &lt;&gt; 'Closed' 
AND [Microsoft.VSTS.Common.Issue] = 'Yes' 
ORDER BY [Microsoft.VSTS.Common.Priority], [System.Id]</f>");
            var parser = new LexalParser(el.Value);
            var nodes = parser.ProcessWherePart();

            Assert.True(nodes[0].NodeType == NodeType.Field);
            Assert.True(string.Equals(((FieldNode)nodes[0]).Field, "System.TeamProject"));

            Assert.True(nodes[1].NodeType == NodeType.Condition);
            Assert.True(((ConditionNode)nodes[1]).Condition == Condition.Equals);

            Assert.True(nodes[2].NodeType == NodeType.Parameter);
            Assert.True(string.Equals(((ParameterNode)nodes[2]).ParameterName, "project"));

            Assert.True(nodes[3].NodeType == NodeType.Operator);
            Assert.True(((OperatorNode)nodes[3]).Operator == Operator.And);

            Assert.True(nodes[4].NodeType == NodeType.Field);
            Assert.True(nodes[5].NodeType == NodeType.Condition);
            Assert.True(nodes[6].NodeType == NodeType.Constant);
            Assert.True(nodes[7].NodeType == NodeType.Operator);
            Assert.True(nodes[8].NodeType == NodeType.Field);
            Assert.True(nodes[9].NodeType == NodeType.Condition);
            Assert.True(nodes[10].NodeType == NodeType.Constant);
        }
        public void Parse2()
        {
            XElement el = XElement.Parse(@"<f>select [System.Id], [Phoenix.DueDate], [Phoenix.MagicDueDate], [System.WorkItemType], [System.State], [System.Title], [System.IterationPath] 
from WorkItems 
where ([System.State] = 'New' 
    or [System.State] = 'Active') 
    and ([System.AssignedTo] = 'Ventsislav Mladenov' or [System.TeamProject] = @project) 
order by [System.Id]</f>");
            var parser = new LexalParser(el.Value);
            var nodes = parser.ProcessWherePart();
            Assert.True(nodes[0].NodeType == NodeType.OpenBracket);

            Assert.True(nodes[1].NodeType == NodeType.Field);
            Assert.True(nodes[2].NodeType == NodeType.Condition);
            Assert.True(nodes[3].NodeType == NodeType.Constant);
            Assert.True(nodes[4].NodeType == NodeType.Operator);
            Assert.True(nodes[5].NodeType == NodeType.Field);
            Assert.True(nodes[6].NodeType == NodeType.Condition);
            Assert.True(nodes[7].NodeType == NodeType.Constant);
            Assert.True(nodes[8].NodeType == NodeType.CloseBracket);

            Assert.True(nodes[9].NodeType == NodeType.Operator);

            Assert.True(nodes[10].NodeType == NodeType.OpenBracket);
            Assert.True(nodes[11].NodeType == NodeType.Field);
            Assert.True(nodes[12].NodeType == NodeType.Condition);
            Assert.True(nodes[13].NodeType == NodeType.Constant);
            Assert.True(nodes[14].NodeType == NodeType.Operator);
            Assert.True(nodes[15].NodeType == NodeType.Field);
            Assert.True(nodes[16].NodeType == NodeType.Condition);
            Assert.True(nodes[17].NodeType == NodeType.Parameter);
            Assert.True(nodes[18].NodeType == NodeType.CloseBracket);
        }
 public void RemoveUnUsedBrackets4()
 {
     string val = "where (([a] = 2) and (([b] = @p)))";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     nodes.Optimize();
     Console.WriteLine(nodes);
     Assert.Equal("( [a] = 2 ) And ( ( [b] = @p ) )", nodes.ToString());
 }
 public void GetSubList1()
 {
     string val = "where ([a] = 2) and ([b] = @p)";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     var list = nodes.GetSubList(0);
     Console.WriteLine(list);
     Assert.Equal("[a] = 2", list.ToString());
 }
Exemplo n.º 5
0
 public void ParseTest1()
 {
     string value = "select * from a where ([a]=10  and [c]<30)and([d] <> 3 or [e] >@s )";
     var parser = new LexalParser(value);
     var nodes = parser.ProcessWherePart(); //or [h] in(10,20)
     AssertNodesTypes(nodes, NodeType.OpenBracket, NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.Operator,
         NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.CloseBracket, NodeType.Operator,
         NodeType.OpenBracket, NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.Operator,
         NodeType.Field, NodeType.Condition, NodeType.Parameter);
 }
 public void RPN2()
 {
     string val = "where [Microsoft.VSTS.Common.ResolvedBy] = 'Ventsislav Mladenov' or [Microsoft.VSTS.Common.ClosedBy] = 'Ventsislav Mladenov'";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     nodes.Optimize();
     nodes.ExtractOperatorForward();
     var xmlTransformer = new NodesToXml(nodes);
     var result = xmlTransformer.WriteXml();
     Console.WriteLine(result);
 }
 public void OrderByParse1()
 {
     XElement el = XElement.Parse(@"<f>select [System.Id], [Phoenix.DueDate], [Phoenix.MagicDueDate], [System.WorkItemType], [System.State], [System.Title], [System.IterationPath]
     from WorkItems
     where ([System.State] = 'New'
     or [System.State] = 'Active')
     and ([System.AssignedTo] = 'Ventsislav Mladenov' or [System.TeamProject] = @project)
     order by [System.Id]</f>");
     var parser = new LexalParser(el.Value);
     var nodes = parser.ProcessOrderBy();
     Console.WriteLine(nodes);
     Assert.AreEqual("[System.Id] Asc", nodes.ToString());
 }
 public void OrderByParse2()
 {
     XElement el = XElement.Parse(@"<f>SELECT [System.Id], [System.WorkItemType], [System.AssignedTo], [System.CreatedBy], [Microsoft.VSTS.Common.Priority], [System.Title], [System.Description]
     FROM WorkItems
     WHERE
     [System.TeamProject] = @project
     AND [System.State] &lt;&gt; 'Closed'
     AND [Microsoft.VSTS.Common.Issue] = 'Yes'
     ORDER BY [Microsoft.VSTS.Common.Priority], [System.Id] desc</f>");
     var parser = new LexalParser(el.Value);
     var nodes = parser.ProcessOrderBy();
     Console.WriteLine(nodes);
     Assert.AreEqual("[Microsoft.VSTS.Common.Priority] Asc, [System.Id] Desc", nodes.ToString());
 }
        public XElement GetQueryXml(WorkItemContext context, FieldList fields)
        {
            var parser = new LexalParser(this.QueryText);
            var nodes = parser.ProcessWherePart();
            nodes.Optimize();
            nodes.ExtractOperatorForward();
            nodes.FixFields(fields);
            nodes.FillFieldTypes(fields);

            var manager = new ParameterManager(context);
            manager.EvalParameters(nodes);

            var xmlTransformer = new NodesToXml(nodes);
            return XElement.Parse(xmlTransformer.WriteXml());
        }
Exemplo n.º 10
0
        public void RPN1()
        {
            XElement el = XElement.Parse(@"<f>select [System.Id], [Phoenix.DueDate], [Phoenix.MagicDueDate], [System.WorkItemType], [System.State], [System.Title], [System.IterationPath] 
from WorkItems 
where ([System.State] = 'New' 
    or [System.State] = 'Active') 
    and ([System.AssignedTo] = 'Ventsislav Mladenov' or [System.TeamProject] = 'TestProject') 
order by [System.Id]</f>");
            var parser = new LexalParser(el.Value);
            var nodes = parser.ProcessWherePart();
            nodes.Optimize();
            nodes.ExtractOperatorForward();
            var xmlTransformer = new NodesToXml(nodes);
            var result = xmlTransformer.WriteXml();
            Console.WriteLine(result);
            Assert.Equal("<Group GroupOperator=\"And\">\r\n  <Group GroupOperator=\"Or\">\r\n    <Expression Column=\"System.State\" FieldType=\"0\" Operator=\"equals\">\r\n      <String>New</String>\r\n    </Expression>\r\n    <Expression Column=\"System.State\" FieldType=\"0\" Operator=\"equals\">\r\n      <String>Active</String>\r\n    </Expression>\r\n  </Group>\r\n  <Group GroupOperator=\"Or\">\r\n    <Expression Column=\"System.AssignedTo\" FieldType=\"0\" Operator=\"equals\">\r\n      <String>Ventsislav Mladenov</String>\r\n    </Expression>\r\n    <Expression Column=\"System.TeamProject\" FieldType=\"0\" Operator=\"equals\">\r\n      <String>TestProject</String>\r\n    </Expression>\r\n  </Group>\r\n</Group>", result);
        }
Exemplo n.º 11
0
        public void Optimize1()
        {
            XElement el = XElement.Parse(@"<f>SELECT [System.Id], [System.WorkItemType], [Microsoft.VSTS.Common.Rank], [System.Title], [System.State], [System.AssignedTo], [Microsoft.VSTS.Common.RoughOrderOfMagnitude], [Microsoft.VSTS.Common.ExitCriteria], [System.Description]
            FROM WorkItems
            WHERE [System.TeamProject] = @project
              AND [System.WorkItemType] = 'Scenario'
              AND [System.State] = 'Active'
            ORDER BY [Microsoft.VSTS.Common.Rank], [System.State], [System.Id]</f>");
            var parser = new LexalParser(el.Value);
            var nodes = parser.ProcessWherePart();
            nodes.Optimize();
            Assert.IsTrue(nodes[0].NodeType == NodeType.Condition);
            Assert.IsTrue(((ConditionNode)nodes[0]).Right.NodeType == NodeType.Parameter);

            Assert.IsTrue(nodes[1].NodeType == NodeType.Operator);

            Assert.IsTrue(nodes[2].NodeType == NodeType.Condition);
            Assert.IsTrue(((ConditionNode)nodes[2]).Right.NodeType == NodeType.Constant);

            Assert.IsTrue(nodes[3].NodeType == NodeType.Operator);

            Assert.IsTrue(nodes[4].NodeType == NodeType.Condition);
            Assert.IsTrue(((ConditionNode)nodes[4]).Right.NodeType == NodeType.Constant);
        }
Exemplo n.º 12
0
 public void ParseTest3()
 {
     string value = " where ([a] <> '')";
     var parser = new LexalParser(value);
     var nodes = parser.ProcessWherePart();
     AssertNodesTypes(nodes, NodeType.OpenBracket, NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.CloseBracket);
 }
 public XElement GetSortingXml()
 {
     var parser = new LexalParser(this.QueryText);
     var sortList = parser.ProcessOrderBy();
     return XElement.Parse(sortList.WriteToXml());
 }
 public List<string> GetSelectColumns()
 {
     var parser = new LexalParser(this.QueryText);
     return parser.ProcessSelect().Select(x => x.ColumnName).ToList();
 }
Exemplo n.º 15
0
 public void ParseTest4()
 {
     string value = " where [a] = @me";
     var parser = new LexalParser(value);
     var nodes = parser.ProcessWherePart();
     AssertNodesTypes(nodes, NodeType.Field, NodeType.Condition, NodeType.Parameter);
 }
 public void NodesToXml3()
 {
     string val = "where (([f] = 2 and [a] = 2) or [s] = 1) and ([b] = 3 or ([x] = 1 and [s] = 3))";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     nodes.Optimize();
     nodes.ExtractOperatorForward();
     var xmlTransformer = new NodesToXml(nodes);
     var output = xmlTransformer.WriteXml();
     Console.WriteLine(output);
 }
 public void NodesToXml2()
 {
     string val = "where ([f] = 2 and [a] = 2) or ([b] = 3 and [x] = 1)";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     nodes.Optimize();
     nodes.ExtractOperatorForward();
     var xmlTransformer = new NodesToXml(nodes);
     var output = xmlTransformer.WriteXml();
     Console.WriteLine(output);
     Assert.Equal("<Group GroupOperator=\"Or\">\r\n  <Group GroupOperator=\"And\">\r\n    <Expression Column=\"f\" FieldType=\"0\" Operator=\"equals\">\r\n      <Number>2</Number>\r\n    </Expression>\r\n    <Expression Column=\"a\" FieldType=\"0\" Operator=\"equals\">\r\n      <Number>2</Number>\r\n    </Expression>\r\n  </Group>\r\n  <Group GroupOperator=\"And\">\r\n    <Expression Column=\"b\" FieldType=\"0\" Operator=\"equals\">\r\n      <Number>3</Number>\r\n    </Expression>\r\n    <Expression Column=\"x\" FieldType=\"0\" Operator=\"equals\">\r\n      <Number>1</Number>\r\n    </Expression>\r\n  </Group>\r\n</Group>", output);
 }
 public void NodesToXml1()
 {
     string val = "where [f] = 2";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     nodes.Optimize();
     nodes.ExtractOperatorForward();
     var xmlTransformer = new NodesToXml(nodes);
     var output = xmlTransformer.WriteXml();
     Console.WriteLine(output);
     Assert.Equal("<Expression Column=\"f\" FieldType=\"0\" Operator=\"equals\">\r\n  <Number>2</Number>\r\n</Expression>", output);
 }
 public void ExtractOperatorForward6()
 {
     string val = "where [f] = 2";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     nodes.Optimize();
     nodes.ExtractOperatorForward();
     Console.WriteLine(nodes);
     Assert.Equal("[f] = 2", nodes.ToString());
 }
 public void ExtractOperatorForward5()
 {
     string val = "where ([f] = 2 and [a] = 2) or ([b] = 3 and [x] = 1)";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     nodes.Optimize();
     nodes.ExtractOperatorForward();
     Console.WriteLine(nodes);
     Assert.Equal("Or ( And [f] = 2 [a] = 2 ) ( And [b] = 3 [x] = 1 )", nodes.ToString());
 }
 public void ExtractOperatorForward4()
 {
     string val = "where (([f] = 2 and [a] = 2) or [s] = 1) and ([b] = 3 or ([x] = 1 and [s] = 3))";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     nodes.Optimize();
     nodes.ExtractOperatorForward();
     Console.WriteLine(nodes);
     Assert.Equal("And ( Or ( And [f] = 2 [a] = 2 ) [s] = 1 ) ( Or [b] = 3 ( And [x] = 1 [s] = 3 ) )", nodes.ToString());
 }
 public void ExtractOperatorForward1()
 {
     string val = "where [a] = 2 and [b] = 3 and [c] = 4 or [d] = 5";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     nodes.Optimize();
     nodes.ExtractOperatorForward();
     Console.WriteLine(nodes);
     Assert.Equal("Or ( And [a] = 2 [b] = 3 [c] = 4 ) [d] = 5", nodes.ToString());
 }
Exemplo n.º 23
0
 public void ExtractOperatorForward2()
 {
     string val = "where ([f] = 2 and [a] = 2 or [s] = 1) and [b] = 3";
     var parser = new LexalParser(val);
     var nodes = parser.ProcessWherePart();
     nodes.Optimize();
     nodes.ExtractOperatorForward();
     Console.WriteLine(nodes);
     Assert.AreEqual("And ( Or ( And [f] = 2 [a] = 2 ) [s] = 1 ) [b] = 3", nodes.ToString());
 }
Exemplo n.º 24
0
        public void RPN4()
        {
            XElement el = XElement.Parse(@"<f>select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State]
            from WorkItems
            where [System.TeamProject] = @project
            and [System.WorkItemType] &lt;&gt; ''
            and ([System.ChangedDate] &lt; @today - 30
              or [System.CreatedDate] &gt; @today - 7)
            and [Microsoft.VSTS.Common.ResolvedBy] = @me
            and [System.WorkItemType] in ('Bug', 'Task')
            and [System.State] &lt;&gt; ''
            order by [System.Id]</f>");

            var parser = new LexalParser(el.Value);
            var nodes = parser.ProcessWherePart();
            nodes.Optimize();
            nodes.ExtractOperatorForward();
            var xmlTransformer = new NodesToXml(nodes);
            var result = xmlTransformer.WriteXml();
            Console.WriteLine(result);
        }
Exemplo n.º 25
0
 public void ParseTest2()
 {
     string value = " where ( ([a] = '3' or [b]<@c) and [d]> 40 )";
     var parser = new LexalParser(value);
     var nodes = parser.ProcessWherePart(); //or [h] in(10,20)
     AssertNodesTypes(nodes, NodeType.OpenBracket, NodeType.OpenBracket, NodeType.Field, NodeType.Condition, NodeType.Constant,
         NodeType.Operator, NodeType.Field, NodeType.Condition, NodeType.Parameter, NodeType.CloseBracket, NodeType.Operator,
         NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.CloseBracket);
 }