public void setter_with_incorrect_target_type() { var propertyName = "DictionaryProperty"; var publicOuter = PublicOuter.Create(); Assert.Throws <ArgumentException>(() => VisibilityBypasser.Instance.GeneratePropertySetter <int>(publicOuter, propertyName)); }
public void derived_class_return_type() { var fieldName = "DerivedField"; var publicOuter = PublicOuter.Create(); Assert.Throws <Exception>(() => VisibilityBypasser.Instance.GenerateFieldReadAccessor <PublicOuter, Derived>(fieldName)); }
public void incorrect_result_type() { var fieldName = "_int32Field"; var publicOuter = PublicOuter.Create(); Assert.Throws <Exception>(() => VisibilityBypasser.Instance.GenerateFieldReadAccessor <PublicOuter, string>(fieldName)); }
public void correctly_write_private_value_type() { var fieldName = "_writeableIntField"; var publicOuter = PublicOuter.Create(); var newIntValue = 42; var action = VisibilityBypasser.Instance.GenerateFieldWriteAccessor <int>(typeof(PublicOuter), fieldName); Assert.DoesNotThrow(() => action(publicOuter, newIntValue)); Assert.That(publicOuter.GetWriteableIntField == newIntValue); }
public void private_reference_returning_method_on_public_object() { var methodName = "PublicOuterReturningMethod"; var publicOuter = PublicOuter.Create(); var methodCaller = VisibilityBypasser.Instance.GenerateParameterlessMethodCaller <PublicOuter, PublicOuter>(methodName); var actualValue = methodCaller(publicOuter); Assert.NotNull(actualValue); }
public void private_reference_property_on_public_object() { var propertyName = "PublicOuterProperty"; var publicOuter = PublicOuter.Create(); var methodCaller = VisibilityBypasser.Instance.GeneratePropertyAccessor <PublicOuter, PublicOuter>(propertyName); var actualValue = methodCaller(publicOuter); Assert.NotNull(actualValue); }
public void incorrect_object_reference_does_not_throw() { var fieldName = "_writableStringField"; var publicOuter = PublicOuter.Create(); var newStringValue = "newStringValue"; var action = VisibilityBypasser.Instance.GenerateFieldWriteAccessor <string>(typeof(PublicOuter), fieldName); Assert.DoesNotThrow(() => action(new List <string>(), newStringValue)); Assert.That(publicOuter.GetWritableStringField != newStringValue); }
public void private_int32_on_public_object() { var fieldName = "_int32Field"; var publicOuter = PublicOuter.Create(); var expectedValue = 7; var fieldAccessor = VisibilityBypasser.Instance.GenerateFieldReadAccessor <PublicOuter, int>(fieldName); var actualValue = fieldAccessor(publicOuter); Assert.AreEqual(expectedValue, actualValue); }
public void base_class_return_type() { var fieldName = "DerivedField"; var publicOuter = PublicOuter.Create(); var expectedValue = publicOuter.DerivedField; var fieldAccessor = VisibilityBypasser.Instance.GenerateFieldReadAccessor <PublicOuter, object>(fieldName); var actualValue = fieldAccessor(publicOuter); Assert.AreEqual(expectedValue, actualValue); }
public void base_result_type() { var propertyName = "Int32Property"; var expectedValue = 13; var publicOuter = PublicOuter.Create(); var methodCaller = VisibilityBypasser.Instance.GeneratePropertyAccessor <PublicOuter, object>(propertyName); var actualValue = methodCaller(publicOuter); Assert.AreEqual(expectedValue, actualValue); }
public void base_result_type() { var methodName = "Int32ReturningMethod"; var expectedValue = 9; var publicOuter = PublicOuter.Create(); var methodCaller = VisibilityBypasser.Instance.GenerateParameterlessMethodCaller <PublicOuter, object>(methodName); var actualValue = methodCaller(publicOuter); Assert.AreEqual(expectedValue, actualValue); }
public void private_reference_property_on_public_object() { var propertyName = "DictionaryProperty"; var publicOuter = PublicOuter.Create(); var methodCaller = VisibilityBypasser.Instance.GeneratePropertyAccessor <PublicOuter, Dictionary <string, object> >(propertyName); var actualValue = methodCaller(publicOuter); Assert.NotNull(actualValue); Assert.That((string)actualValue["originalKey"] == "originalValue"); }
public void private_value_property_on_public_object() { var propertyName = "Int32Property"; var expectedValue = 13; var publicOuter = PublicOuter.Create(); var methodCaller = VisibilityBypasser.Instance.GeneratePropertyAccessor <PublicOuter, int>(propertyName); var actualValue = methodCaller(publicOuter); Assert.AreEqual(expectedValue, actualValue); }
public void method_with_parameter_unknown_type() { var methodName = "StringTakingAndReturningMethod"; var publicOuter = PublicOuter.Create(); var expectedValue = "foo"; var methodCaller = VisibilityBypasser.Instance.GenerateOneParameterMethodCaller <PublicOuter, object, string>(methodName); var actualValue = methodCaller(publicOuter, expectedValue); Assert.AreEqual(expectedValue, actualValue); }
public void private_value_returning_method_on_public_object() { var methodName = "Int32ReturningMethod"; var expectedValue = 9; var publicOuter = PublicOuter.Create(); var methodCaller = VisibilityBypasser.Instance.GenerateParameterlessMethodCaller <PublicOuter, int>(methodName); var actualValue = methodCaller(publicOuter); Assert.AreEqual(expectedValue, actualValue); }
public void private_reference_property_on_private_object() { var assemblyName = Assembly.GetExecutingAssembly().FullName; var typeName = "NewRelic.Reflection.UnitTests.PublicOuter+PrivateInner"; var propertyName = "PrivateInnerProperty"; var privateInner = PublicOuter.CreatePrivateInner(); var methodCaller = VisibilityBypasser.Instance.GeneratePropertyAccessor <object>(assemblyName, typeName, propertyName); var actualValue = methodCaller(privateInner); Assert.NotNull(actualValue); }
public void private_value_property_on_private_object() { var assemblyName = Assembly.GetExecutingAssembly().FullName; var typeName = "NewRelic.Reflection.UnitTests.PublicOuter+PrivateInner"; var propertyName = "Int32Property"; var expectedValue = 11; var privateInner = PublicOuter.CreatePrivateInner(); var methodCaller = VisibilityBypasser.Instance.GeneratePropertyAccessor <int>(assemblyName, typeName, propertyName); var actualValue = methodCaller(privateInner); Assert.AreEqual(expectedValue, actualValue); }
public void method_with_parameter_unknown_instance_types() { var assemblyName = Assembly.GetExecutingAssembly().FullName; var typeName = "NewRelic.Reflection.UnitTests.PublicOuter"; var methodName = "StringTakingAndReturningMethod"; var publicOuter = PublicOuter.Create(); var expectedValue = "foo"; var methodCaller = VisibilityBypasser.Instance.GenerateOneParameterMethodCaller <string, string>(assemblyName, typeName, methodName); var actualValue = methodCaller(publicOuter, expectedValue); Assert.AreEqual(expectedValue, actualValue); }
public void private_value_returning_method_on_private_object() { var assemblyName = Assembly.GetExecutingAssembly().FullName; var typeName = "NewRelic.Reflection.UnitTests.PublicOuter+PrivateInner"; var methodName = "Int32ReturningMethod"; var expectedValue = 5; var privateInner = PublicOuter.CreatePrivateInner(); var methodCaller = VisibilityBypasser.Instance.GenerateParameterlessMethodCaller <int>(assemblyName, typeName, methodName); var actualValue = methodCaller(privateInner); Assert.AreEqual(expectedValue, actualValue); }
public void private_int32_on_private_object() { var assemblyName = Assembly.GetExecutingAssembly().FullName; var typeName = "NewRelic.Reflection.UnitTests.PublicOuter+PrivateInner"; var fieldName = "_int32Field"; var privateInner = PublicOuter.CreatePrivateInner(); var expectedValue = 3; var fieldAccessor = VisibilityBypasser.Instance.GenerateFieldReadAccessor <int>(assemblyName, typeName, fieldName); var actualValue = fieldAccessor(privateInner); Assert.AreEqual(expectedValue, actualValue); }
public void set_private_value_property_on_public_object() { var propertyName = "Int32Property"; var publicOuter = PublicOuter.Create(); var getter = VisibilityBypasser.Instance.GeneratePropertyAccessor <PublicOuter, int>(propertyName); var originalValue = getter(publicOuter); var setter = VisibilityBypasser.Instance.GeneratePropertySetter <int>(publicOuter, propertyName); setter(originalValue + 1); var newValue = getter(publicOuter); Assert.AreEqual(newValue, originalValue + 1); }
public void set_private_value_property_on_private_object() { var assemblyName = Assembly.GetExecutingAssembly().FullName; var typeName = "NewRelic.Reflection.UnitTests.PublicOuter+PrivateInner"; var propertyName = "Int32Property"; var privateInner = PublicOuter.CreatePrivateInner(); var getter = VisibilityBypasser.Instance.GeneratePropertyAccessor <int>(assemblyName, typeName, propertyName); var originalValue = getter(privateInner); var setter = VisibilityBypasser.Instance.GeneratePropertySetter <int>(privateInner, propertyName); setter(originalValue + 1); var newValue = getter(privateInner); Assert.AreEqual(newValue, originalValue + 1); }
public void set_private_reference_property_on_public_object() { var propertyName = "DictionaryProperty"; var publicOuter = PublicOuter.Create(); var getter = VisibilityBypasser.Instance.GeneratePropertyAccessor <PublicOuter, Dictionary <string, object> >(propertyName); var originalValue = getter(publicOuter); var setter = VisibilityBypasser.Instance.GeneratePropertySetter <Dictionary <string, object> >(publicOuter, propertyName); setter(new Dictionary <string, object>() { { "newKey", "newValue" } }); var newValue = getter(publicOuter); Assert.AreNotSame(originalValue, newValue); Assert.That((string)newValue["newKey"] == "newValue"); }
public void set_private_reference_property_on_private_object() { var assemblyName = Assembly.GetExecutingAssembly().FullName; var typeName = "NewRelic.Reflection.UnitTests.PublicOuter+PrivateInner"; var propertyName = "DictionaryProperty"; var privateInner = PublicOuter.CreatePrivateInner(); var getter = VisibilityBypasser.Instance.GeneratePropertyAccessor <object>(assemblyName, typeName, propertyName); var originalValue = getter(privateInner); var setter = VisibilityBypasser.Instance.GeneratePropertySetter <Dictionary <string, object> >(privateInner, propertyName); setter(new Dictionary <string, object>() { { "newKey", "newValue" } }); var newValue = (Dictionary <string, object>)getter(privateInner); Assert.AreNotSame(originalValue, newValue); Assert.That((string)newValue["newKey"] == "newValue"); }
public void setter_with_incorrect_property_name() { var publicOuter = PublicOuter.Create(); Assert.Throws <KeyNotFoundException>(() => VisibilityBypasser.Instance.GeneratePropertySetter <int>(publicOuter, "does_not_exist")); }