public void ExecuteSetArrayCommandWithVariable() { BindingEnvironment environment = new BindingEnvironment(); SetArrayCommand command = new SetArrayCommand(new VariableExpression("foo"), new IExpression[] { new ConstantExpression(0) }, new ConstantExpression("bar")); command.Execute(environment); object result = environment.GetValue("foo"); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(IList)); Assert.AreEqual(1, ((IList)result).Count); Assert.AreEqual("bar", ((IList)result)[0]); }
private ICommand ParseSimpleCommand() { if (this.TryParse(TokenType.Name, "var")) { this.lexer.NextToken(); return this.ParseVarCommand(); } if (this.TryParse(TokenType.Name, "exit")) { this.lexer.NextToken(); return new ExitCommand(); } IExpression expression = this.ParseExpression(); if (expression == null) return null; if (this.TryParse(TokenType.Operator, "=")) { this.lexer.NextToken(); ICommand command = null; if (expression is ArrayExpression) { ArrayExpression aexpr = (ArrayExpression)expression; command = new SetArrayCommand(aexpr.Expression, aexpr.Arguments, this.ParseExpression()); } else command = new SetCommand(expression, this.ParseExpression()); return command; } if (this.TryParse(TokenType.Operator, "<-")) { this.lexer.NextToken(); return new SetValueCommand(expression, this.ParseExpression()); } return new ExpressionCommand(expression); }
public void ExecuteSetArrayCommandWithDotExpression() { BindingEnvironment environment = new BindingEnvironment(); DotExpression dotexpr = new DotExpression(new VariableExpression("foo"), "Values"); SetArrayCommand command = new SetArrayCommand(dotexpr, new IExpression[] { new ConstantExpression(0) }, new ConstantExpression("bar")); command.Execute(environment); object obj = environment.GetValue("foo"); Assert.IsNotNull(obj); Assert.IsInstanceOfType(obj, typeof(DynamicObject)); DynamicObject dynobj = (DynamicObject)obj; object obj2 = dynobj.GetValue("Values"); Assert.IsNotNull(obj2); Assert.IsInstanceOfType(obj2, typeof(IList)); IList list = (IList)obj2; Assert.AreEqual(1, list.Count); Assert.AreEqual("bar", list[0]); }