public void TestAccessArray() { IKernel kernel = TestModule.GetTestKernel (); var factory = kernel.Get<IExecutorFactory>(); Block statements = new Block (); statements.Scope = new Scope (); ArrayExpr array = new ArrayExpr(factory.GetArrayExecutor()); array.Scope = statements.Scope; array.Elements.Add(new StringLiteral { Value = "yay" }); array.Elements.Add(new StringLiteral { Value = "boo" }); Assign assign = new Assign(factory.GetAssignExecutor()) { Ident = new Variable ( factory.GetVariableExecutor ()) { Scope = statements.Scope, Ident = "x" }, Expr = array, Scope = statements.Scope }; Print print = new Print(factory.GetPrintExecutor()); print.Expr = new Variable( factory.GetVariableExecutor()) { Scope = statements.Scope, Ident = "x", Indexer = new NumberLiteral() { Value = 1 } }; statements.Add ( assign ); statements.Add ( print ); statements.Execute(); StandardOutDummy output = kernel.Get<IStandardOut> () as StandardOutDummy; Assert.AreEqual ( "boo", output.Text ); }
public Expression ParseArray(IScope scope, Tokens tokens) { var result = new ArrayExpr( _executorFactory.GetArrayExecutor() ); tokens.RemoveNextToken(BeginArray); while (tokens.PeekToken() != EndArray) { result.Elements.Add(this.ParseValue(scope, tokens)); tokens.RemoveNextToken(ArraySeparator); } tokens.RemoveNextToken(EndArray); return result; }
public void TestEvaluateArrayWithArithLiterals() { IKernel kernel = TestModule.GetTestKernel (); var factory = kernel.Get<IExecutorFactory>(); ArrayExpr array = new ArrayExpr(factory.GetArrayExecutor()); array.Elements.Add(new ArithExpr { Left = new NumberLiteral { Value = 3 }, Right = new NumberLiteral { Value = 4 }, Op = ArithOp.Add }); Dynamic dynamic = array.Evaluate(); Assert.AreEqual(dynamic.ArrayValue[0].NumberValue, 7, "First element should be 3+4"); }
public void TestEvaluateArrayWithStringLiterals() { IKernel kernel = TestModule.GetTestKernel (); var factory = kernel.Get<IExecutorFactory>(); ArrayExpr array = new ArrayExpr(factory.GetArrayExecutor()); array.Elements.Add(new StringLiteral { Value = "yay" }); array.Elements.Add(new StringLiteral { Value = "boo" }); Dynamic dynamic = array.Evaluate(); Assert.AreEqual(DynamicType.arrayType, dynamic.Type, "Type should be array"); Assert.AreEqual(dynamic.ArrayValue[0].StringValue, "yay", "First element should be 'yay'"); Assert.AreEqual(dynamic.ArrayValue[1].StringValue, "boo", "Second element should be 'boo'"); }