コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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"));
        }
コード例 #4
0
 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"));
 }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        public void GetValueFromDynamicObject()
        {
            DynamicObject dynobj = new DynamicObject(null);
            dynobj.SetValue("FirstName", "Adam");

            Assert.AreEqual("Adam", ObjectUtilities.GetValue(dynobj, "FirstName"));
        }