public static void Invoke_Multiple_Parameters_Via_Params_Receives_Correct_Arguments() { object[] actualArgs = null; object[] invokedArgs = null; object[] expectedArgs = new object[] { 42, "testString", 5.0 }; TestType_IMultipleParameterService proxy = DispatchProxy.Create <TestType_IMultipleParameterService, TestDispatchProxy>(); ((TestDispatchProxy)proxy).CallOnInvoke = (method, args) => { invokedArgs = args; return(String.Empty); }; proxy.ParamsMethod((int)expectedArgs[0], (string)expectedArgs[1], (double)expectedArgs[2]); // All separate params should have become a single object[1] array Assert.True(invokedArgs != null && invokedArgs.Length == 1, String.Format("Expected single element object[] but actual was {0}", invokedArgs == null ? "null" : invokedArgs.Length.ToString())); // That object[1] should contain an object[3] containing the args actualArgs = invokedArgs[0] as object[]; Assert.True(actualArgs != null && actualArgs.Length == expectedArgs.Length, String.Format("Invoked expected object[] of length {0} but actual was {1}", expectedArgs.Length, (actualArgs == null ? "null" : actualArgs.Length.ToString()))); for (int i = 0; i < expectedArgs.Length; ++i) { Assert.True(expectedArgs[i].Equals(actualArgs[i]), String.Format("Expected arg[{0}] = '{1}' but actual was '{2}'", i, expectedArgs[i], actualArgs[i])); } }
public static void Invoke_Multiple_Parameters_Receives_Correct_Arguments() { object[] invokedArgs = null; object[] expectedArgs = new object[] { (int)42, "testString", (double)5.0 }; TestType_IMultipleParameterService proxy = DispatchProxy.Create <TestType_IMultipleParameterService, TestDispatchProxy>(); ((TestDispatchProxy)proxy).CallOnInvoke = (method, args) => { invokedArgs = args; return(0.0); }; proxy.TestMethod((int)expectedArgs[0], (string)expectedArgs[1], (double)expectedArgs[2]); Assert.True(invokedArgs != null && invokedArgs.Length == expectedArgs.Length, String.Format("Expected {0} arguments but actual was {1}", expectedArgs.Length, invokedArgs == null ? "null" : invokedArgs.Length.ToString())); for (int i = 0; i < expectedArgs.Length; ++i) { Assert.True(expectedArgs[i].Equals(invokedArgs[i]), String.Format("Expected arg[{0}] = '{1}' but actual was '{2}'", i, expectedArgs[i], invokedArgs[i])); } }