public void Chaining() { var f = VanceStubbs.Proxies.Factory .For <ISimpleInterface>() .WithState <List <string> >() .WithPostEntryHandler((target, state, parameters) => state.Add("Out1")) .WithPostEntryHandler((target, state, parameters) => state.Add("Out2")) .WithPreExitHandler((target, state, ret) => { state.Add("In1"); return(ret); }) .WithPreExitHandler((target, state, ret) => { state.Add("In2"); return(ret); }) .Create(); var v = new SimpleInterfaceImplementation(); var s = new List <string>(); var proxy = f(v, s); Assert.AreEqual(-1, proxy.ReturnInt()); CollectionAssert.AreEqual(new[] { "Out2", "Out1", "In1", "In2" }, s); }
public void Noop() { var f = VanceStubbs.Proxies.Factory .For <ISimpleInterface>() .Stateless() .Create(); var v = new SimpleInterfaceImplementation(); var proxy = f(v); Assert.AreEqual(-1, proxy.ReturnInt()); }
public void BasicStatelessProxy() { var f = VanceStubbs.Proxies.Factory .For <ISimpleInterface>() .Stateless() .WithPreExitHandler((target, o) => o is int x ? x + 42 : o) .WithPostEntryHandler((target, parameters) => { }) .Create(); var v = new SimpleInterfaceImplementation(); var proxy = f(v); Assert.AreEqual(41, proxy.ReturnInt()); }
public void ParameterModification() { var f = VanceStubbs.Proxies.Factory .For <ISimpleInterface>() .WithState <int>() .WithPostEntryHandler((target, state, parameters) => { if (parameters.Length >= 1 && parameters[0] is int x) { parameters[0] = x + 1; } }) .Create(); var v = new SimpleInterfaceImplementation(); var proxy = f(v, 0); Assert.AreEqual(51, proxy.PassThrough(50)); }
public static void Main() { var peverifyPath = @"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\PEVerify.exe"; if (!File.Exists(peverifyPath)) { Console.WriteLine("PEVerify.exe not found at the given path, verification skipped"); peverifyPath = null; } try { Func <ISimpleInterface, int, ISimpleInterface> f = VanceStubbs.Proxies.Factory .For <ISimpleInterface>() .WithState <int>() .WithPostEntryHandler((ISimpleInterface @this, int state, object[] parameters) => { if (parameters.Length >= 1 && parameters[0] is int x) { parameters[0] = x + 1; } }) .Create(); var v = new SimpleInterfaceImplementation(); var proxy = f(v, 0); Assert.AreEqual(51, proxy.PassThrough(50)); } finally { DynamicAssembly.Default.Save(); if (peverifyPath != null) { var process = Process.Start(new ProcessStartInfo(peverifyPath) { Arguments = "stubsautogenerated.dll", CreateNoWindow = false, UseShellExecute = false }); } } }