public void TestApplyStatement() { Dictionary test = CreateDictionary("Test"); NameSpace n1 = CreateNameSpace(test, "N1"); Structure s1 = CreateStructure(n1, "S1"); StructureElement el1 = CreateStructureElement(s1, "E1", "Boolean"); Structure s2 = CreateStructure(n1, "S2"); StructureElement el2 = CreateStructureElement(s2, "E2", "S1"); Function function = CreateFunction(n1, "f", "S1"); Collection collection = CreateCollection(n1, "Col", "S1", 10); Variable v = CreateVariable(n1, "V", "Col"); Compiler.Compile_Synchronous(true, true); RuleCondition rc = CreateRuleAndCondition(n1, "Rule1"); Parser parser = new Parser(); { ApplyStatement statement = parser.Statement(rc, "APPLY X <- X", true, true) as ApplyStatement; Assert.IsNotNull(statement); } { ApplyStatement statement = parser.Statement(rc, "APPLY X <- X ON V | X.", true, true) as ApplyStatement; Assert.IsNotNull(statement); DerefExpression deref = statement.ConditionExpression as DerefExpression; Assert.IsNotNull(deref); ITypedElement element = deref.Arguments[0].Ref as ITypedElement; Assert.IsNotNull(element); Assert.AreEqual(element.Type, s1); } }
public void TestApplyStatement() { Dictionary test = CreateDictionary("Test"); NameSpace n1 = CreateNameSpace(test, "N1"); Structure s1 = CreateStructure(n1, "S1"); StructureElement el1 = CreateStructureElement(s1, "E1", "Boolean"); Structure s2 = CreateStructure(n1, "S2"); StructureElement el2 = CreateStructureElement(s2, "E2", "S1"); Function function = CreateFunction(n1, "f", "S1"); Collection collection = CreateCollection(n1, "Col", "S1", 10); Variable v = CreateVariable(n1, "V", "Col"); Compiler.Compile_Synchronous(true, true); RuleCondition rc = CreateRuleAndCondition(n1, "Rule1"); Parser parser = new Parser(); { // 0 1 2 // 012345678901234567890123 const string text = "APPLY X <- X ON V | X."; ApplyStatement statement = parser.Statement(rc, text, true, true) as ApplyStatement; Assert.IsNotNull(statement); ContextGrabber grabber = new ContextGrabber(); Assert.IsNull(grabber.GetContext(0, statement)); Assert.IsNull(grabber.GetContext(1, statement)); Assert.IsNull(grabber.GetContext(2, statement)); Assert.IsNull(grabber.GetContext(3, statement)); Assert.IsNull(grabber.GetContext(4, statement)); Assert.IsNull(grabber.GetContext(5, statement)); Assert.AreEqual(statement.IteratorVariable, grabber.GetContext(6, statement)); Assert.AreEqual(statement.IteratorVariable, grabber.GetContext(7, statement)); Assert.IsNull(grabber.GetContext(8, statement)); Assert.IsNull(grabber.GetContext(9, statement)); Assert.IsNull(grabber.GetContext(10, statement)); Assert.AreEqual(statement.IteratorVariable, grabber.GetContext(11, statement)); Assert.AreEqual(statement.IteratorVariable, grabber.GetContext(12, statement)); Assert.IsNull(grabber.GetContext(13, statement)); Assert.IsNull(grabber.GetContext(14, statement)); Assert.IsNull(grabber.GetContext(15, statement)); Assert.AreEqual(v, grabber.GetContext(16, statement)); Assert.AreEqual(v, grabber.GetContext(17, statement)); Assert.IsNull(grabber.GetContext(18, statement)); Assert.IsNull(grabber.GetContext(19, statement)); Assert.AreEqual(statement.IteratorVariable, grabber.GetContext(20, statement)); Assert.AreEqual(statement.IteratorVariable, grabber.GetContext(21, statement)); Assert.IsNull(grabber.GetContext(22, statement)); } }
/// <summary> /// Visits an APPLY statement /// </summary> /// <param name="applyStatement"></param> protected virtual void VisitApplyStatement(ApplyStatement applyStatement) { if (applyStatement.AppliedStatement != null) { VisitStatement(applyStatement.AppliedStatement); } if (applyStatement.ListExpression != null) { VisitExpression(applyStatement.ListExpression); } if (applyStatement.ConditionExpression != null) { VisitExpression(applyStatement.ConditionExpression); } }