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); }
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); }
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); }
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); }
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); }
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); }
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 }); }
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 }); }
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); }
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); }
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); }