public void GetIndexedValuesFromDynamicObject() { DynamicObject obj = new DynamicObject(null); obj.SetValue("name", "Adam"); obj.SetValue("get_age", new DefinedFunction("get_age", null, null, null)); Assert.AreEqual("Adam", ObjectUtilities.GetIndexedValue(obj, new object[] { "name" })); object f = ObjectUtilities.GetIndexedValue(obj, new object[] { "get_age" }); Assert.IsNotNull(f); Assert.IsInstanceOfType(f, typeof(IFunction)); }
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 SetGetValue() { DefinedClass klass = new DefinedClass("Spam"); DynamicObject dynobj = new DynamicObject(klass); dynobj.SetValue("one", 1); var result = dynobj.GetValue("one"); Assert.IsNotNull(result); Assert.AreEqual(1, result); Assert.IsTrue(dynobj.HasValue("one")); }
public void RedefineMethodAsObjectValue() { DefinedClass klass = new DefinedClass("Spam"); IFunction function = new NativeMethod(GetValueMethod); klass.SetMethod("foo", function); DynamicObject dynobj = new DynamicObject(klass); dynobj.SetValue("foo", 1); Assert.AreEqual(1, dynobj.GetValue("foo")); }
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); } }
public void GetValueFromDynamicObject() { DynamicObject dynobj = new DynamicObject(null); dynobj.SetValue("FirstName", "Adam"); Assert.AreEqual("Adam", ObjectUtilities.GetValue(dynobj, "FirstName")); }