public void ConversionShouldBeCalledBetweenDifferentSignatures() { object theDefault = "42"; Func <string, int> convert1 = app => int.Parse(app, CultureInfo.InvariantCulture) + 1; Func <int, string> convert2 = app => app.ToString(CultureInfo.InvariantCulture) + "2"; Func <string, string> middleware1 = app => app + "3"; Func <int, int> middleware2 = app => app + 4; var builder = new AppBuilder(); builder.AddSignatureConversion(convert1); builder.AddSignatureConversion(convert2); builder.Properties["builder.DefaultApp"] = theDefault; var theApp = builder.BuildNew <int>(x => x.Use(middleware1).Use(middleware2)); // "42" + 1: 43 // theDefault passed through convert1 for next middleware // 43 + 4: 47 // passed through middleware2 // 47 + "2": "472" // passed through convert2 for next middleware // "472" + "3": "4723" // passed through middleware1 // "4723" + 1: 4724 // passed through convert1 to return theApp.ShouldBe(4724); }
public void ConversionShouldBeCalledBetweenDifferentSignatures() { object theDefault = "42"; Func<string, int> convert1 = app => int.Parse(app, CultureInfo.InvariantCulture) + 1; Func<int, string> convert2 = app => app.ToString(CultureInfo.InvariantCulture) + "2"; Func<string, string> middleware1 = app => app + "3"; Func<int, int> middleware2 = app => app + 4; var builder = new AppBuilder(); builder.AddSignatureConversion(convert1); builder.AddSignatureConversion(convert2); builder.Properties["builder.DefaultApp"] = theDefault; var theApp = builder.BuildNew<int>(x => x.Use(middleware1).Use(middleware2)); // "42" + 1: 43 // theDefault passed through convert1 for next middleware // 43 + 4: 47 // passed through middleware2 // 47 + "2": "472" // passed through convert2 for next middleware // "472" + "3": "4723" // passed through middleware1 // "4723" + 1: 4724 // passed through convert1 to return theApp.ShouldBe(4724); }
public void ConverterCombinationWillBeInvokedIfNeeded() { var builder = new AppBuilder(); Func<AppFunc, DifferentType> convert1 = _ => new DifferentType(); Func<DifferentType, AppFunc> convert2 = _ => call => { throw new NotImplementedException(); }; builder.AddSignatureConversion(convert1); builder.AddSignatureConversion(convert2); var diff = builder.Build<DifferentType>(); }
public void ConverterCombinationWillBeInvokedIfNeeded() { var builder = new AppBuilder(); Func <AppFunc, DifferentType> convert1 = _ => new DifferentType(); Func <DifferentType, AppFunc> convert2 = _ => call => { throw new NotImplementedException(); }; builder.AddSignatureConversion(convert1); builder.AddSignatureConversion(convert2); var diff = builder.Build <DifferentType>(); }