public void GetTypeFactory_CtorNoArgsAlt_ReturnsCorrectlyInstantiatedObject() { var expected = new Example(); FactoryDelegate factory = DynamicMethodGenerator.GetTypeFactory(typeof(Example), Type.EmptyTypes); Assert.NotNull(factory); var actual = (Example)factory(); var getters = from m in typeof(Example).GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy) let g = DynamicMethodGenerator.GetGetter(m) where (g != null) select g; foreach (GetterDelegate getter in getters) { // assert all of the fields and properties are equal Assert.Equal(getter(expected), getter(actual)); } }
public void GetMethodProxy_MethodExtraArgs_IgnoresExtraBuildsProxyAndInvokes() { var input = new Example(); var expected = new Example("alpha", "bravo", "charlie", -1, -2, -3, "deer", "sun", "myself"); ProxyDelegate proxy = DynamicMethodGenerator.GetMethodProxy(typeof(Example).GetMethod("Reset")); Assert.NotNull(proxy); proxy(input, "alpha", "bravo", "charlie", -1, -2, -3, "deer", "sun", "myself", 4, 5, 6, "extra", false); var getters = from m in typeof(Example).GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy) let g = DynamicMethodGenerator.GetGetter(m) where (g != null) select g; foreach (GetterDelegate getter in getters) { // assert all of the fields and properties are equal Assert.Equal(getter(expected), getter(input)); } }
public void GetTypeFactory_CtorExtraArgs_IgnoresAndReturnsCorrectlyInstantiatedObject() { var expected = new Example("alpha", "bravo", "charlie", -1, -2, -3, "deer", "sun", "myself"); FactoryDelegate factory = DynamicMethodGenerator.GetTypeFactory( typeof(Example), typeof(string), typeof(string), typeof(string), typeof(int), typeof(int), typeof(int), typeof(string), typeof(string), typeof(string)); Assert.NotNull(factory); var actual = (Example)factory("alpha", "bravo", "charlie", -1, -2, -3, "deer", "sun", "myself", 4, 5, 6, "extra", false); var getters = from m in typeof(Example).GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy) let g = DynamicMethodGenerator.GetGetter(m) where (g != null) select g; foreach (GetterDelegate getter in getters) { // assert all of the fields and properties are equal Assert.Equal(getter(expected), getter(actual)); } }