public void TestStringAssignmentExpression2() { string a; string b; ExecutionEnvironment e = new ExecutionEnvironment(); Identifier ai = new Identifier("a"); Identifier bi = new Identifier("b"); e.RegisterValue("a", "5.0"); e.RegisterValue("b", "6.0"); a = "5.0"; b = "6.0"; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.AddEqual }.Execute(e).ReturnValue, a += b); Assert.AreEqual(a, e.GetValue("a")); Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.MinusEqual }.Execute(e).Type, CompletionType.Exception); e.SetValue("a", 5); e.SetValue("b", "6.0"); a = "5"; b = "6.0"; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.AddEqual }.Execute(e).ReturnValue, a += b); Assert.AreEqual(a, e.GetValue("a")); }
public void TestIntConvetion() { ExecutionEnvironment e = new ExecutionEnvironment(); e.RegisterValue("a", 1); Assert.AreEqual(e.GetValue <string>("a"), "1"); Assert.AreEqual(e.GetValue <float>("a"), 1); Assert.AreEqual(e.GetValue <double>("a"), 1); }
public void TestVariable() { ExecutionEnvironment e = new ExecutionEnvironment(); e.RegisterValue("a", null); Assert.IsNull(e.GetValue("a")); e.RegisterValue("b", "5"); Assert.AreEqual(e.GetValue("b"), "5"); }
public void TestDoubleAssignmentExpression2() { int a = 5; int b = 6; ExecutionEnvironment e = new ExecutionEnvironment(); Identifier ai = new Identifier("a"); Identifier bi = new Identifier("b"); e.RegisterValue("a", 5.0); e.RegisterValue("b", 6.0); e.SetValue("a", 5.0); e.SetValue("b", 6.0); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.BitAndEqual }.Execute(e).ReturnValue, a &= b); Assert.IsTrue(Math.Abs((int)(e.GetValue("a")) - a) < 0.01); e.SetValue("a", 5.0); e.SetValue("b", 6.0); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.BitOrEqual }.Execute(e).ReturnValue, a |= b); Assert.IsTrue(Math.Abs((int)(e.GetValue("a")) - a) < 0.01); e.SetValue("a", 5.0); e.SetValue("b", 6.0); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.BitExclusiveOrEqual }.Execute(e).ReturnValue, a ^= b); Assert.IsTrue(Math.Abs((int)(e.GetValue("a")) - a) < 0.01); e.SetValue("a", 5.0); e.SetValue("b", 6.0); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.BitLeftShiftEqual }.Execute(e).ReturnValue, a <<= b); Assert.IsTrue(Math.Abs((int)(e.GetValue("a")) - a) < 0.01); e.SetValue("a", 5.0); e.SetValue("b", 6.0); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.BitRightShiftEqual }.Execute(e).ReturnValue, a >>= b); Assert.IsTrue(Math.Abs((int)(e.GetValue("a")) - a) < 0.01); }
public void TestStringConvertion() { ExecutionEnvironment e = new ExecutionEnvironment(); e.RegisterValue("b", "5"); Assert.AreEqual(e.GetValue("b"), "5"); Assert.AreEqual(e.GetValue <int>("b"), 5); Assert.AreEqual(e.GetValue <float>("b"), 5); e.RegisterValue("c", "false"); Assert.AreEqual(e.GetValue <bool>("c"), false); }
public void TestDoubleAssignmentExpression() { double a = 5; double b = 6; ExecutionEnvironment e = new ExecutionEnvironment(); Identifier ai = new Identifier("a"); Identifier bi = new Identifier("b"); e.RegisterValue("a", 5.0); e.RegisterValue("b", 6.0); a = 5; b = 6; Assert.IsTrue(Math.Abs((double)(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.Equal }.Execute(e).ReturnValue) - (a = b)) < 0.01); Assert.IsTrue(Math.Abs((double)e.GetValue("a") - a) < 0.01); e.SetValue("a", 5.0); e.SetValue("b", 6.0); a = 5; b = 6; Assert.IsTrue(Math.Abs((double)(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.AddEqual }.Execute(e).ReturnValue) - (a += b)) < 0.01); Assert.IsTrue(Math.Abs((double)e.GetValue("a") - a) < 0.01); e.SetValue("a", 5.0); e.SetValue("b", 6.0); a = 5; b = 6; Assert.IsTrue(Math.Abs((double)(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.MinusEqual }.Execute(e).ReturnValue) - (a -= b)) < 0.01); Assert.IsTrue(Math.Abs((double)e.GetValue("a") - a) < 0.01); e.SetValue("a", 5.0); e.SetValue("b", 6.0); a = 5; b = 6; Assert.IsTrue(Math.Abs((double)(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.DivideEqual }.Execute(e).ReturnValue) - (a /= b)) < 0.01); Assert.IsTrue(Math.Abs((double)e.GetValue("a") - a) < 0.01); e.SetValue("a", 5.0); e.SetValue("b", 6.0); a = 5; Assert.IsTrue(Math.Abs((double)(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.MulitiplyEqual }.Execute(e).ReturnValue) - (a *= b)) < 0.01); Assert.IsTrue(Math.Abs((double)e.GetValue("a") - a) < 0.01); }
public void TestWhileStatement() { ExecutionEnvironment e = new ExecutionEnvironment(); e.RegisterValue("a", true); e.RegisterValue("b", true); e.RegisterValue("c", 5); e.RegisterValue("d", 6); WhileStatement s = new WhileStatement(); s.Test = new BinaryExpression() { Left = new Identifier() { Variable = "a" }, Right = new Identifier() { Variable = "b" }, Operator = Operator.And }; s.Body = new BlockStatement(); s.Body.Body.Add(new ExpressionStatement() { Expression = new AssignmentExpression() { Left = new Identifier() { Variable = "c" }, Right = new BinaryExpression() { Left = new Identifier() { Variable = "c" }, Operator = Operator.Add, Right = new Literal() { Raw = "2" } } } }); s.Body.Body.Add(new ExpressionStatement() { Expression = new AssignmentExpression() { Left = new Identifier() { Variable = "a" }, Right = new Literal() { Raw = "false" } } }); var c = s.Execute(e); Assert.AreEqual(e.GetValue("c"), 7); }
public void TestVariableDeclarationcs() { VariableDeclarationcs v = new VariableDeclarationcs(); v.Name = "v"; v.Value = 5; ExecutionEnvironment e = new ExecutionEnvironment(); var r = v.Execute(e); Assert.AreEqual(r.ReturnValue, 5); Assert.AreEqual(r.Type, CompletionType.Value); Assert.AreEqual(e.GetValue("v"), 5); }
public void TestUpldateExpression() { float b = 5; ExecutionEnvironment e = new ExecutionEnvironment(); UpdateExpression add = new UpdateExpression() { IsPrefix = false, Operator = UpdateOperator.Add, Expression = new Identifier() { Variable = "a" } }; UpdateExpression minus = new UpdateExpression() { IsPrefix = false, Operator = UpdateOperator.Minus, Expression = new Identifier() { Variable = "a" } }; //test int int a = 5; e.RegisterValue("a", a); Assert.AreEqual(add.Execute(e).ReturnValue, a++); Assert.AreEqual(e.GetValue("a"), a); Assert.AreEqual(minus.Execute(e).ReturnValue, a--); Assert.AreEqual(e.GetValue("a"), a); //test float b = 5; e.SetValue("a", b); Assert.AreEqual(add.Execute(e).ReturnValue, b++); Assert.AreEqual(e.GetValue("a"), b); Assert.AreEqual(minus.Execute(e).ReturnValue, b--); Assert.AreEqual(e.GetValue("a"), b); //test double double c = 7.1; e.SetValue("a", c); Assert.AreEqual(add.Execute(e).ReturnValue, c++); Assert.AreEqual(e.GetValue("a"), c); Assert.AreEqual(minus.Execute(e).ReturnValue, c--); Assert.AreEqual(e.GetValue("a"), c); //test string string s = "5"; e.SetValue("a", s); Assert.AreEqual(add.Execute(e).Type, CompletionType.Exception); Assert.AreEqual(minus.Execute(e).Type, CompletionType.Exception); }
public void TestIntAssignmentExpression() { int a = 5; int b = 6; ExecutionEnvironment e = new ExecutionEnvironment(); Identifier ai = new Identifier("a"); Identifier bi = new Identifier("b"); e.RegisterValue("a", 5); e.RegisterValue("b", 6); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.Equal }.Execute(e).ReturnValue, a = b); Assert.AreEqual(e.GetValue("a"), a); e.SetValue("a", 5); e.SetValue("b", 6); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.AddEqual }.Execute(e).ReturnValue, a += b); Assert.AreEqual(e.GetValue("a"), a); e.SetValue("a", 5); e.SetValue("b", 6); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.MinusEqual }.Execute(e).ReturnValue, a -= b); Assert.AreEqual(e.GetValue("a"), a); e.SetValue("a", 5); e.SetValue("b", 6); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.MulitiplyEqual }.Execute(e).ReturnValue, a *= b); Assert.AreEqual(e.GetValue("a"), a); e.SetValue("a", 5); e.SetValue("b", 6); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.DivideEqual }.Execute(e).ReturnValue, a /= b); Assert.AreEqual(e.GetValue("a"), a); e.SetValue("a", 5); e.SetValue("b", 6); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.BitAndEqual }.Execute(e).ReturnValue, a &= b); Assert.AreEqual(e.GetValue("a"), a); e.SetValue("a", 5); e.SetValue("b", 6); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.BitOrEqual }.Execute(e).ReturnValue, a |= b); Assert.AreEqual(e.GetValue("a"), a); e.SetValue("a", 5); e.SetValue("b", 6); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.BitExclusiveOrEqual }.Execute(e).ReturnValue, a ^= b); Assert.AreEqual(e.GetValue("a"), a); e.SetValue("a", 5); e.SetValue("b", 6); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.BitLeftShiftEqual }.Execute(e).ReturnValue, a <<= b); Assert.AreEqual(e.GetValue("a"), a); e.SetValue("a", 5); e.SetValue("b", 6); a = 5; b = 6; Assert.AreEqual(new AssignmentExpression() { Left = ai, Right = bi, Operator = AssignmentOperator.BitRightShiftEqual }.Execute(e).ReturnValue, a >>= b); Assert.AreEqual(e.GetValue("a"), a); }