public void InvokeGetValueMethod() { DefinedClass klass = new DefinedClass("Spam"); IFunction function = new NativeMethod(GetValueMethod); klass.SetMethod("foo", function); DynamicObject dynobj = new DynamicObject(klass); dynobj.SetValue("one", 1); var result = dynobj.Invoke("foo", null, new object[] { "one" }, null); Assert.IsNotNull(result); Assert.AreEqual(1, result); }
public void InvokeMethodThatReturnsSelf() { DefinedClass klass = new DefinedClass("Spam"); IFunction function = new NativeMethod(SelfMethod); klass.SetMethod("foo", function); DynamicObject dynobj = new DynamicObject(klass); var result = dynobj.Invoke("foo", null, null, null); Assert.IsNotNull(result); Assert.AreEqual(dynobj, result); }
public void InvokeMethodDefinedInClass() { DefinedClass klass = new DefinedClass("Spam"); IFunction function = new NativeMethod(DummyMethod); klass.SetMethod("foo", function); DynamicObject dynobj = new DynamicObject(klass); var result = dynobj.Invoke("foo", null, null, null); Assert.IsNull(result); }
public void RaiseWhenThereIsAValueInsteadOfAMethod() { DefinedClass klass = new DefinedClass("Spam"); IFunction function = new NativeMethod(GetValueMethod); klass.SetMethod("foo", function); DynamicObject dynobj = new DynamicObject(klass); dynobj.SetValue("foo", 1); try { dynobj.Invoke("foo", null, new object[] { "one" }, null); Assert.Fail("Exception expected"); } catch (Exception ex) { Assert.IsInstanceOfType(ex, typeof(TypeError)); Assert.AreEqual("'int' object is not callable", ex.Message); } }