Beispiel #1
0
 /// <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>())));
 }
Beispiel #2
0
        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>();
        }