/// <summary> /// Collect elements after splitting and casting to given type. /// </summary> /// <typeparam name="TType"></typeparam> /// <param name="blueprint"></param> /// <returns></returns> public static PipelineBlueprint CollectAndCast <TType>(this PipelineBlueprint blueprint) { return (blueprint .Collect() .Apply( (List <UnitContext> unit) => unit.Where(el => el.Unit != null).Select(el => el.GetUnit <TType>()))); }
public void IncorrectNumberOfSplitsAndCollectorsShouldThrowException() { // GIVEN mLogs.Logs.Clear(); var injectionProvider = new IoCContainer(); injectionProvider.RegisterSingle(new List <int>()); injectionProvider.Register <TestIntSource>(); Contracts.Dependencies.Injection.RegisterInjectionProvider(injectionProvider, false); PipelineBlueprint blueprintNormal = PipelineBlueprint.CreateBlueprint(typeof(int), "Normal"); PipelineBlueprint blueprintOnlyCollect = PipelineBlueprint.CreateBlueprint(typeof(int), "OnlyCollect"); PipelineBlueprint blueprintOnlySplit = PipelineBlueprint.CreateBlueprint(typeof(int), "OnlySplit"); PipelineBlueprint blueprintSplitsMoreThanCollects = PipelineBlueprint.CreateBlueprint(typeof(int), "SplitsMoreThanCollects"); PipelineBlueprint blueprintCollectsMoreThanSplits = PipelineBlueprint.CreateBlueprint(typeof(int), "CollectsMoreThanSplits"); // WHEN Action createNormal = () => new Pipeline(blueprintNormal .Split <TestIntSource>() .Collect()); Action createOnlySplit = () => new Pipeline(blueprintOnlySplit .Split <TestIntSource>()); Action createOnlyCollect = () => new Pipeline(blueprintOnlyCollect .Collect()); Action createSplitsMoreThanCollects = () => new Pipeline(blueprintSplitsMoreThanCollects .Split <TestIntSource>() .Split <TestIntSource>() .Collect()); Action createCollectsMoreThanSplits = () => new Pipeline(blueprintCollectsMoreThanSplits .Split <TestIntSource>() .Collect() .Collect()); // THAN createNormal.ShouldNotThrow(); createOnlySplit.ShouldThrow <InvalidSplitCollectException>(); createOnlyCollect.ShouldThrow <InvalidSplitCollectException>(); createSplitsMoreThanCollects.ShouldThrow <InvalidSplitCollectException>(); createCollectsMoreThanSplits.ShouldThrow <InvalidSplitCollectException>(); }