Пример #1
0
        public async void Can_Compose_With_Single_Branching_With_Func()
        {
            int Add5If10(int val) => val + 5;

            Predicate <int> Is10 = x => x == 10;

            var composedResult = await Begin(2)
                                 .Then(Add3)
                                 .Then(Add5)
                                 .Then(WaitAndReturn)
                                 .Then(Add5)
                                 .IfThen(Is10, Add5If10)
                                 .Finally();

            Assertions.ResultEquals(15, composedResult);
        }
Пример #2
0
        public async void Can_Compose_With_Single_Branching()
        {
            var             Add5If15 = Begin(1).Then(Add5);
            Predicate <int> Is15     = x => x == 15;

            var composedResult = await Begin(2)
                                 .Then(Add3)
                                 .Then(Add5)
                                 .Apply(Add5If15)
                                 .Then(WaitAndReturn)
                                 .Then(Add5)
                                 .IfThen(Is15, Add5If15)
                                 .Finally();

            Assertions.ResultEquals(20, composedResult);
        }
Пример #3
0
        public async void Can_Begin_With_Tuples_And_Compose_Passing_Tuple_And_Result()
        {
            Task <Result <(int, string)> > ValidateIsTuple(int val, string data) => Begin((val, data)).Finally();
            string Concat((int, string) data) => $"{data.Item2} {data.Item1}";
            string ToUpper(string str) => str.ToUpper();

            var intval = 2;
            var name   = "number";

            var value = await Begin((intval, name))
                        .Then(ValidateIsTuple)
                        .Then(Concat)
                        .Then(ToUpper)
                        .Finally();

            ;

            Assertions.ResultEquals("NUMBER 2", value);
        }
Пример #4
0
        public async void Can_Begin_With_Tuples_And_Compose_Deconstructed()
        {
            (int, string) ValidateIsTuple((int, string) data) => data;
            string Concat(int val, string name) => $"{name} {val}";
            string ToUpper(string str) => str.ToUpper();

            var intval = 2;
            var name   = "number";

            var value = await Begin((intval, name))
                        .Then(ValidateIsTuple)
                        .Then(Concat)
                        .Then(ToUpper)
                        .Finally();

            ;

            Assertions.ResultEquals("NUMBER 2", value);
        }
Пример #5
0
        public async void Can_Compose_Async_Operations()
        {
            var composedResult = await GetFirstResult(2).Apply(Add5).Finally();

            Assertions.ResultEquals(15, composedResult);
        }