public void GetLocalVariablesFromExpression() { AssignInstanceVarExpression cmd = new AssignInstanceVarExpression("one", new AssignExpression("a", new ConstantExpression(1))); var result = cmd.GetLocalVariables(); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count); Assert.AreEqual("a", result[0]); }
public void ParseAssignInstanceVarCommand() { Parser parser = new Parser("@a=2"); var expected = new AssignInstanceVarExpression("a", new ConstantExpression(2)); var result = parser.ParseCommand(); Assert.IsNotNull(result); Assert.AreEqual(expected, result); Assert.IsNull(parser.ParseCommand()); }
public void AssignValue() { AssignInstanceVarExpression expr = new AssignInstanceVarExpression("one", new ConstantExpression(1)); DynamicObject obj = new DynamicObject(null); Context context = new Context(obj, null); var result = expr.Evaluate(context); Assert.AreEqual(1, result); Assert.AreEqual(1, obj.GetValue("one")); }
public IExpression ParseExpression() { IExpression expr = this.ParseNoAssignExpression(); if (expr == null) { return(null); } if (!(expr is NameExpression) && !(expr is ClassVarExpression) && !(expr is InstanceVarExpression) && !(expr is DotExpression) && !(expr is IndexedExpression)) { return(expr); } var token = this.lexer.NextToken(); if (token == null) { return(expr); } if (token.Type != TokenType.Operator || token.Value != "=") { this.lexer.PushToken(token); return(expr); } IExpression assignexpr = null; if (expr is NameExpression) { assignexpr = new AssignExpression(((NameExpression)expr).Name, this.ParseExpression()); } else if (expr is DotExpression) { assignexpr = new AssignDotExpressions((DotExpression)expr, this.ParseExpression()); } else if (expr is InstanceVarExpression) { assignexpr = new AssignInstanceVarExpression(((InstanceVarExpression)expr).Name, this.ParseExpression()); } else if (expr is ClassVarExpression) { assignexpr = new AssignClassVarExpression(((ClassVarExpression)expr).Name, this.ParseExpression()); } else if (expr is IndexedExpression) { assignexpr = new AssignIndexedExpression(((IndexedExpression)expr).Expression, ((IndexedExpression)expr).IndexExpression, this.ParseExpression()); } return(assignexpr); }
public void Equals() { AssignInstanceVarExpression expr1 = new AssignInstanceVarExpression("a", new ConstantExpression(1)); AssignInstanceVarExpression expr2 = new AssignInstanceVarExpression("a", new ConstantExpression(2)); AssignInstanceVarExpression expr3 = new AssignInstanceVarExpression("b", new ConstantExpression(1)); AssignInstanceVarExpression expr4 = new AssignInstanceVarExpression("a", new ConstantExpression(1)); Assert.IsTrue(expr1.Equals(expr4)); Assert.IsTrue(expr4.Equals(expr1)); Assert.AreEqual(expr1.GetHashCode(), expr4.GetHashCode()); Assert.IsFalse(expr1.Equals(null)); Assert.IsFalse(expr1.Equals(expr2)); Assert.IsFalse(expr1.Equals(expr3)); Assert.IsFalse(expr1.Equals(123)); }
public void GetLocalVariables() { AssignInstanceVarExpression expr = new AssignInstanceVarExpression("one", new ConstantExpression(1)); Assert.IsNull(expr.GetLocalVariables()); }