Ejemplo n.º 1
0
    public void ChangingTheScope()
    {
      Script sc = Script.Compile("return A == 1 && B == 10;");
      ScriptContext c1 = new ScriptContext();
      c1.SetItem("A", 1);
      c1.SetItem("B", 2);
      sc.Context = c1;
      bool b1 = (bool)sc.Execute();// should give false
      Assert.IsFalse(b1);

      c1 = new ScriptContext();
      c1.SetItem("A", 1);
      c1.SetItem("B", 10);
      sc.Context = c1;
      bool b2 = (bool)sc.Execute(); // should give true
      Assert.IsTrue(b2);      
    }
Ejemplo n.º 2
0
    public void UsingScopeAccessingPropretySetter()
    {
      IScriptContext ctx = new ScriptContext();     
      UsingTest1 us = new UsingTest1();
      ctx.SetItem("a", us);

      object rez = Script.RunCode(@"a.Width = 25;", ctx);
      
      Assert.AreEqual(25, us.Width);
    }
Ejemplo n.º 3
0
    public void CodeVariableReferenceTest()
    {
      object testObject = new object();

      IScriptContext context = new ScriptContext();
      context.SetItem("a", testObject);

      CodeProgram prog = new CodeProgram();
      prog.Statements.Add(
        new CodeExpressionStatement(
          new CodeVariableReference("a")));

      CodeDomCompiler.Compile(prog).Execute(context);

      Assert.AreEqual(testObject, context.Result);
    }
Ejemplo n.º 4
0
        public void ContextDependantEventsAndContextSwitching()
        {
            ScriptContext c = new ScriptContext();
              c.SetItem("invoked", 0);

              ScriptContext c1 = new ScriptContext();
              c1.SetItem("invoked", 10);

              Script s = Script.Compile(
             @"
            function handler(s,e) global(invoked) {
             invoked++;
            }

            ce = new ContextEvent();
            ce.NameChanged += handler;

            return ce;
              "
             );
              s.Context = c;

              ContextEvent resultVal = (ContextEvent)s.Execute();
              resultVal.Name = "TestName";

              Assert.AreEqual(1, c.GetItem("invoked", false));

              s.Context = c1;
              resultVal.Name = "TestName2";

              Assert.AreEqual(11, c1.GetItem("invoked", false));

              s.Dispose();
              //TODO: Event Broker should be refactored
              try
              {
            resultVal.Name = "TestName 4";
              }
              catch (ScriptEventException e)
              {
            Assert.AreEqual(Strings.ContextNotFoundExceptionMessage, e.Message);
              }
        }
Ejemplo n.º 5
0
        public void ContextSwitching()
        {
            Script s = Script.Compile("return A;");

              ScriptContext sc = new ScriptContext();
              sc.SetItem("A", 1);
              s.Context = sc;

              Assert.AreEqual(1, s.Execute());

              sc = new ScriptContext();
              sc.SetItem("A", 10);
              s.Context = sc;

              Assert.AreEqual(10, s.Execute());
        }
Ejemplo n.º 6
0
        public void DecimalPlusTests()
        {
            System.Int16 i16 = 10;
              System.Int32 i32 = 10;
              System.Int64 i64 = 10;
              System.Double d = 10;
              System.Single f = 10;
              System.Decimal dc = 2;
              object rez = null;

              IScriptContext context = new ScriptContext();
              context.SetItem("i16", i16);
              context.SetItem("i32", i32);
              context.SetItem("i64", i64);
              context.SetItem("d", d);
              context.SetItem("f", f);
              context.SetItem("dc", dc);

              rez = Script.RunCode(@"
            return i16 + dc;
              ", context);
              Assert.AreEqual(i16 + dc, rez);

              rez = Script.RunCode(@"
            return i32 + dc;
              ", context);
              Assert.AreEqual(i32 + dc, rez);

              rez = Script.RunCode(@"
            return i64 + dc;
              ", context);
              Assert.AreEqual(i64 + dc, rez);

              rez = Script.RunCode(@"
            return new decimal(f) + dc;
              ", context);
              Assert.AreEqual(new decimal(f) + dc, rez);

              rez = Script.RunCode(@"
            return new decimal(d) + dc;
              ", context);
              Assert.AreEqual(new decimal(d) + dc, rez);

              // Reverse

              rez = Script.RunCode(@"
            return  dc + i16;
              ", context);
              Assert.AreEqual(dc + i16, rez);

              rez = Script.RunCode(@"
            return dc + i32;
              ", context);
              Assert.AreEqual(dc + i32, rez);

              rez = Script.RunCode(@"
            return dc + i64;
              ", context);
              Assert.AreEqual(dc + i64, rez);

              rez = Script.RunCode(@"
            return dc + new decimal(f);
              ", context);
              Assert.AreEqual(dc + new decimal(f), rez);

              rez = Script.RunCode(@"
            return dc + new decimal(d);
              ", context);
              Assert.AreEqual(dc + new decimal(d), rez);
        }
Ejemplo n.º 7
0
    public void AstDomCompiler_InvokeMember3()
    {
      VM_Test1 vt1 = new VM_Test1();

      IScriptContext context = new ScriptContext();
      context.SetItem("v", vt1);

      CodeProgram domTree = AstDomCompiler.Compile(Script.Compile("return v.Next.Next;", null, false).Ast);
      ExecutableMachine vm = CodeDomCompiler.Compile(domTree);
      vm.Execute(context);

      Assert.AreEqual(2, ((VM_Test1)context.Result).Level);
    }
Ejemplo n.º 8
0
    public void AstDomCompiler_InvokeMember()
    {
      int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
      int[] b = new int[9];

      IScriptContext context = new ScriptContext();
      context.SetItem("a", a);
      context.SetItem("b", b);
      
      CodeProgram domTree = AstDomCompiler.Compile(Script.Compile("return a.CopyTo(b, 0);", null, false).Ast);
      ExecutableMachine vm = CodeDomCompiler.Compile(domTree);
      vm.Execute(context);

      Assert.AreEqual(a[4], b[4]);
    }
Ejemplo n.º 9
0
    public void AstDomCompiler_ForEach()
    {
      IScriptContext context = new ScriptContext();
      context.SetItem("a", new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });

      CodeProgram domTree = AstDomCompiler.Compile(Script.Compile("sum=0; foreach(i in a) sum = sum + i;", null, false).Ast);
      ExecutableMachine vm = CodeDomCompiler.Compile(domTree);
      vm.Execute(context);

      Assert.AreEqual(45, context.GetItem("sum", true));
    }