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); }
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); }
private static void TryInvalidValidate(ExprVariableNodeImpl varNode) { try { SupportExprNodeFactory.Validate3Stream(varNode); Assert.Fail(); } catch (ExprValidationException ex) { // expected } }
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)); }
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)); } }
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); }