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)); }
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); } }