示例#1
0
        public void ContextDependantEvents()
        {
            Script s = Script.Compile(
                @"
            invoked = false;
 
            function handler(s,e) global(invoked) {
             invoked = true;
            }

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

            return ce;
          "
                );


            ContextEvent resultVal = (ContextEvent)s.Execute();

            Assert.IsFalse((bool)s.Context.GetItem("invoked", false));

            resultVal.Name = "TestName";

            Assert.IsTrue((bool)s.Context.GetItem("invoked", false));
        }
示例#2
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);
            }
        }