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]);
        }
Example #2
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"));
        }
Example #4
0
        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());
        }