public void GetUndefinedAttributeAsNull() { DefinedClass klass = new DefinedClass("Spam"); DynamicObject dynobj = new DynamicObject(klass); var result = dynobj.GetValue("foo"); Assert.IsNull(result); Assert.IsFalse(dynobj.HasValue("foo")); }
public void GetValueFromClass() { DefinedClass klass = new DefinedClass("Spam"); DynamicObject dynobj = new DynamicObject(klass); klass.SetValue("one", 1); var result = dynobj.GetValue("one"); Assert.IsNotNull(result); Assert.AreEqual(1, result); Assert.IsTrue(dynobj.HasValue("one")); }
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 GetMethodFromClass() { DefinedClass klass = new DefinedClass("Spam"); IFunction function = new NativeMethod(DummyMethod); klass.SetMethod("foo", function); DynamicObject dynobj = new DynamicObject(klass); var result = dynobj.GetValue("foo"); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(IFunction)); Assert.AreEqual(function, result); }
public void SetAttributeInDynamicObject() { BindingEnvironment environment = new BindingEnvironment(); DefinedClass klass = new DefinedClass("Spam"); DynamicObject dynobj = new DynamicObject(klass); environment.SetValue("foo", dynobj); SetAttributeCommand command = new SetAttributeCommand(new NameExpression("foo"), "one", new ConstantExpression(1)); command.Execute(environment); Assert.IsTrue(dynobj.HasValue("one")); Assert.AreEqual(1, dynobj.GetValue("one")); }
public object Apply(IContext context, IList<object> arguments, IDictionary<string, object> namedArguments) { var dynobj = new DynamicObject(this); if (this.HasMethod(ConstructorName)) { IFunction constructor = this.GetMethod(ConstructorName); IList<object> args = new List<object>() { dynobj }; if (arguments != null && arguments.Count > 0) foreach (var arg in arguments) args.Add(arg); constructor.Apply(context, args, namedArguments); } return dynobj; }
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 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 NewDynamicObject() { DefinedClass klass = new DefinedClass("Spam"); DynamicObject dynobj = new DynamicObject(klass); Assert.IsNotNull(dynobj.Class); Assert.AreEqual(klass, dynobj.Class); }
public void GetValueFromDynamicObject() { DynamicObject dynobj = new DynamicObject(null); dynobj.SetValue("FirstName", "Adam"); Assert.AreEqual("Adam", ObjectUtilities.GetValue(dynobj, "FirstName")); }
public void SetValueInDynamicObject() { DynamicObject obj = new DynamicObject(null); ObjectUtilities.SetValue(obj, "FirstName", "Adam"); Assert.AreEqual("Adam", obj.GetValue("FirstName")); }