Ejemplo n.º 1
0
        public async Task Flatten_ReturnsATask()
        {
            var pipeline = CreatePipeline.With(() => 5);
            var task     = pipeline.Flatten();

            Assert.Equal(5, await task);
        }
Ejemplo n.º 2
0
 public static Pipeline <Result <TSuccess, TFailure> > FlipMerge <TSuccess, TFailure>(
     this Pipeline <Result <Pipeline <TSuccess>, TFailure> > pipeLine)
 => pipeLine
 .SelectMany(result =>
             result.EitherFold(
                 r => r.Success.Select(Result <TSuccess, TFailure> .Succeeded),
                 error => CreatePipeline.Return(Result <TSuccess, TFailure> .Failed(error.Failure))));
Ejemplo n.º 3
0
        public async Task Return_LiftsConstantAndSideEffectFreeValueIntoAPipeline()
        {
            var pipeline = CreatePipeline.Return(5);
            var task     = pipeline.Flatten();

            Assert.Equal(5, await task);
        }
Ejemplo n.º 4
0
        public async Task Select_ComposesTaskReturningMethod()
        {
            async Task <int> AddFour(int number) => await(number + 4).AsTask();

            var pipeline = CreatePipeline.With(() => 5).Select(AddFour);
            var task     = pipeline.Flatten();

            Assert.Equal(9, await task);
        }
Ejemplo n.º 5
0
        public async Task SelectMany_ComposesPipeReturningMethod()
        {
            var initialPipeline = CreatePipeline.With(() => 5);

            var resultingPipeline = initialPipeline.SelectMany(five => CreatePipeline.With(() => five + 4));

            var task = resultingPipeline.Flatten();

            Assert.Equal(9, await task);
        }
Ejemplo n.º 6
0
        public async Task SelectMany_AllowsLinqSyntacticSugarForMonadicComposition()
        {
            var firstPipeline  = CreatePipeline.With(() => 5);
            var secondPipeline = CreatePipeline.With(() => 6);
            var thirdPipeline  = CreatePipeline.With(() => 9);

            var resultingPipeline = from firstValue in firstPipeline
                                    from secondValue in secondPipeline
                                    from thirdValue in thirdPipeline
                                    select firstValue + secondValue + thirdValue;

            var task = resultingPipeline.Flatten();

            Assert.Equal(20, await task);
        }
Ejemplo n.º 7
0
        public Task <CreatePipelineResponse> CreatePipeline(
            string contactId,
            string pipelineId,
            string statusId,
            string?note  = null,
            int?priority = null,
            Dictionary <string, string>?customFields = null,
            CancellationToken cancellationToken      = default)
        {
            var function = new CreatePipeline(
                contactId,
                pipelineId,
                statusId,
                note,
                priority,
                customFields);

            return(CallApi <CreatePipelineParams, CreatePipelineResponse>(
                       function, cancellationToken));
        }
Ejemplo n.º 8
0
 public static Pipeline <Result <TSuccess, TFailure> > ToPipeline <TSuccess, TFailure>(
     this Result <TSuccess, TFailure> result)
 => result.IsSuccess
     ? CreatePipeline.Return(Result <TSuccess, TFailure> .Succeeded(result.Success))
     : CreatePipeline.Return(Result <TSuccess, TFailure> .Failed(result.Failure));
Ejemplo n.º 9
0
 public static Pipeline <Result <TSuccess, TFailure> > FlipMerge <TSuccess, TFailure>(
     this Result <Pipeline <Result <TSuccess, TFailure> >, TFailure> result)
 => result.EitherFold(r => r.Success, e => CreatePipeline.Return(Result <TSuccess, TFailure> .Failed(e.Failure)));