Esempio n. 1
0
        private static ExprNode HandleVariable(
            IList <Chainable> chain,
            VariableMetaData variable,
            StatementSpecMapContext mapContext,
            Func <IList <Chainable>, ExprDotNodeImpl> dotNodeFunction)
        {
            var message = VariableUtil.CheckVariableContextName(mapContext.ContextName, variable);

            if (message != null)
            {
                throw new ValidationException(message);
            }

            ExprNode rootNode = new ExprVariableNodeImpl(variable, null);

            if (chain.Count == 1)
            {
                return(rootNode);
            }

            // Handle simple-subproperty by means of variable node
            if (chain.Count == 2 && chain[1] is ChainableName)
            {
                return(new ExprVariableNodeImpl(variable, chain[1].GetRootNameOrEmptyString()));
            }

            var         subchain = chain.SubList(1, chain.Count);
            ExprDotNode dot      = dotNodeFunction.Invoke(subchain);

            dot.AddChildNode(rootNode);
            return(dot);
        }
Esempio n. 2
0
 public void SetUp()
 {
     _variableService = new VariableServiceImpl(100, null, null, null);
     _variableService.CreateNewVariable(null, "var1", "string", true, false, false, null, null);
     _variableService.CreateNewVariable(null, "dummy", "string", true, false, false, null, null);
     _variableService.CreateNewVariable(null, "IntPrimitive", "int", true, false, false, null, null);
     _varNode = new ExprVariableNodeImpl(_variableService.GetVariableMetaData("var1"), null);
 }
Esempio n. 3
0
 private static void TryInvalidValidate(ExprVariableNodeImpl varNode)
 {
     try {
         SupportExprNodeFactory.Validate3Stream(varNode);
         Assert.Fail();
     }
     catch (ExprValidationException ex)
     {
         // expected
     }
 }
Esempio n. 4
0
        public void TestEquals()
        {
            ExprInNode       otherInNode   = SupportExprNodeFactory.MakeInSetNode(false);
            ExprVariableNode otherVarOne   = new ExprVariableNodeImpl(_variableService.GetVariableMetaData("dummy"), null);
            ExprVariableNode otherVarTwo   = new ExprVariableNodeImpl(_variableService.GetVariableMetaData("var1"), null);
            ExprVariableNode otherVarThree = new ExprVariableNodeImpl(_variableService.GetVariableMetaData("var1"), "abc");

            Assert.IsTrue(_varNode.EqualsNode(_varNode));
            Assert.IsTrue(_varNode.EqualsNode(otherVarTwo));
            Assert.IsFalse(_varNode.EqualsNode(otherVarOne));
            Assert.IsFalse(_varNode.EqualsNode(otherInNode));
            Assert.IsFalse(otherVarTwo.EqualsNode(otherVarThree));
        }
Esempio n. 5
0
        public static ExprNode ResolvePropertyOrVariableIdentifier(String identifier, VariableService variableService, StatementSpecRaw spec)
        {
            var metaData = variableService.GetVariableMetaData(identifier);

            if (metaData != null)
            {
                var exprNode = new ExprVariableNodeImpl(metaData, null);
                spec.HasVariables = true;
                AddVariableReference(spec, metaData.VariableName);
                var message = VariableServiceUtil.CheckVariableContextName(spec.OptionalContextName, metaData);
                if (message != null)
                {
                    throw ASTWalkException.From(message);
                }
                return(exprNode);
            }
            else
            {
                return(new ExprIdentNodeImpl(identifier));
            }
        }
Esempio n. 6
0
        public static ExprNode ResolvePropertyOrVariableIdentifier(
            string identifier,
            VariableCompileTimeResolver variableCompileTimeResolver,
            StatementSpecRaw spec)
        {
            VariableMetaData metaData = variableCompileTimeResolver.Resolve(identifier);
            if (metaData != null)
            {
                ExprVariableNodeImpl exprNode = new ExprVariableNodeImpl(metaData, null);
                spec.ReferencedVariables.Add(metaData.VariableName);
                string message = VariableUtil.CheckVariableContextName(spec.OptionalContextName, metaData);
                if (message != null)
                {
                    throw ASTWalkException.From(message);
                }

                return exprNode;
            }

            return new ExprIdentNodeImpl(identifier);
        }