Пример #1
0
        public void SetStatic()
        {
            Action <object, object> setter = ExpressionReflectionDelegateFactory.Instance.CreateSet <object>(TestReflectionUtils.GetProperty(typeof(StaticTestClass), "StringProperty"));

            setter(null, "New property!");
            Assert.AreEqual("New property!", StaticTestClass.StringProperty);

            setter = ExpressionReflectionDelegateFactory.Instance.CreateSet <object>(TestReflectionUtils.GetField(typeof(StaticTestClass), "StringField"));

            setter(null, "New field!");
            Assert.AreEqual("New field!", StaticTestClass.StringField);
        }
Пример #2
0
        public void CreateGetField()
        {
            FieldsTestClass c = new FieldsTestClass
            {
                BoolField   = true,
                StringField = "String!"
            };

            Func <object, object> getter = ExpressionReflectionDelegateFactory.Instance.CreateGet <object>(TestReflectionUtils.GetField(typeof(FieldsTestClass), "StringField"));

            object value = getter(c);

            Assert.AreEqual("String!", value);

            getter = ExpressionReflectionDelegateFactory.Instance.CreateGet <object>(TestReflectionUtils.GetField(typeof(FieldsTestClass), "BoolField"));

            value = getter(c);
            Assert.AreEqual(true, value);
        }
Пример #3
0
        public void CreateMethodCall()
        {
            MethodCall <object, object> method = ExpressionReflectionDelegateFactory.Instance.CreateMethodCall <object>(TestReflectionUtils.GetMethod(typeof(Movie), "ToString"));

            Movie  m      = new Movie();
            object result = method(m);

            Assert.AreEqual("Newtonsoft.Json.Tests.TestObjects.Movie", result);

            method = ExpressionReflectionDelegateFactory.Instance.CreateMethodCall <object>(TestReflectionUtils.GetMethod(typeof(Movie), "Equals"));

            result = method(m, m);
            Assert.AreEqual(true, result);
        }
Пример #4
0
        public void GetStatic()
        {
            StaticTestClass.StringField    = "Field!";
            StaticTestClass.StringProperty = "Property!";

            Func <object, object> getter = ExpressionReflectionDelegateFactory.Instance.CreateGet <object>(TestReflectionUtils.GetProperty(typeof(StaticTestClass), "StringProperty"));

            object v = getter(null);

            Assert.AreEqual(StaticTestClass.StringProperty, v);

            getter = ExpressionReflectionDelegateFactory.Instance.CreateGet <object>(TestReflectionUtils.GetField(typeof(StaticTestClass), "StringField"));

            v = getter(null);
            Assert.AreEqual(StaticTestClass.StringField, v);
        }
Пример #5
0
        public void CreatePropertySetter()
        {
            Action <object, object> setter = ExpressionReflectionDelegateFactory.Instance.CreateSet <object>(TestReflectionUtils.GetProperty(typeof(Movie), "Name"));

            Movie m = new Movie();

            setter(m, "OH HAI!");

            Assert.AreEqual("OH HAI!", m.Name);
        }
Пример #6
0
        public void CreatePropertyGetter()
        {
            Func <object, object> getter = ExpressionReflectionDelegateFactory.Instance.CreateGet <object>(TestReflectionUtils.GetProperty(typeof(Movie), "Name"));

            Movie m = new Movie();

            m.Name = "OH HAI!";

            object value = getter(m);

            Assert.AreEqual("OH HAI!", value);
        }
Пример #7
0
        public void CreateSetWithBadObjectValue()
        {
            ExceptionAssert.Throws <InvalidCastException>(
                () =>
            {
                Movie m = new Movie();

                Action <object, object> setter = ExpressionReflectionDelegateFactory.Instance.CreateSet <object>(TestReflectionUtils.GetProperty(typeof(Movie), "Name"));

                setter(m, new Version("1.1.1.1"));
            }, new[]
            {
                "Unable to cast object of type 'System.Version' to type 'System.String'.",
                "Cannot cast from source type to destination type."     //mono
            });
        }
Пример #8
0
        public void CreateSetWithBadObjectTarget()
        {
            ExceptionAssert.Throws <InvalidCastException>(
                () =>
            {
                Person p = new Person();
                Movie m  = new Movie();

                Action <object, object> setter = ExpressionReflectionDelegateFactory.Instance.CreateSet <object>(TestReflectionUtils.GetProperty(typeof(Movie), "Name"));

                setter(m, "Hi");

                Assert.AreEqual(m.Name, "Hi");

                setter(p, "Hi");

                Assert.AreEqual(p.Name, "Hi");
            },
                new[]
            {
                "Unable to cast object of type 'Newtonsoft.Json.Tests.TestObjects.Person' to type 'Newtonsoft.Json.Tests.TestObjects.Movie'.",
                "Cannot cast from source type to destination type."     // mono
            });
        }
Пример #9
0
        public void SetOnStruct()
        {
            object structTest = new StructTest();

            Action <object, object> setter = ExpressionReflectionDelegateFactory.Instance.CreateSet <object>(TestReflectionUtils.GetProperty(typeof(StructTest), "StringProperty"));

            setter(structTest, "Hi1");
            Assert.AreEqual("Hi1", ((StructTest)structTest).StringProperty);

            setter = ExpressionReflectionDelegateFactory.Instance.CreateSet <object>(TestReflectionUtils.GetField(typeof(StructTest), "StringField"));

            setter(structTest, "Hi2");
            Assert.AreEqual("Hi2", ((StructTest)structTest).StringField);
        }
Пример #10
0
        public void CreateSetField()
        {
            FieldsTestClass c = new FieldsTestClass();

            Action <object, object> setter = ExpressionReflectionDelegateFactory.Instance.CreateSet <object>(TestReflectionUtils.GetField(typeof(FieldsTestClass), "StringField"));

            setter(c, "String!");
            Assert.AreEqual("String!", c.StringField);

            setter = ExpressionReflectionDelegateFactory.Instance.CreateSet <object>(TestReflectionUtils.GetField(typeof(FieldsTestClass), "BoolField"));

            setter(c, true);
            Assert.AreEqual(true, c.BoolField);
        }
Пример #11
0
        public void CreateSetField_ReadOnly()
        {
            FieldsTestClass c = new FieldsTestClass();

            Action <object, object> setter = ExpressionReflectionDelegateFactory.Instance.CreateSet <object>(TestReflectionUtils.GetField(typeof(FieldsTestClass), "IntReadOnlyField"));

            setter(c, int.MinValue);
            Assert.AreEqual(int.MinValue, c.IntReadOnlyField);
        }