コード例 #1
0
        public void Result2_GivenOnSuccesMap_WhenIsFailure_ExpectNoOperation()
        {
            var result = Result2 <Order, string> .Failed("error");

            var result2 = result.OnSuccess(order => new Customer());

            result2.IsSuccess.Should().BeFalse();
            result2.SuccessResult.Should().BeNull();
            result2.FailureResult.Should().Be("error");
        }
コード例 #2
0
        public void Result2_GivenAFailure_WhenOnFailureMap_ExpectCorrectedSuccess()
        {
            var result = Result2 <Order, string> .Failed("error");

            var result2 = result.OnFailure(e => new Order());

            result2.IsSuccess.Should().BeTrue();
            result2.SuccessResult.GetType().Should().Be(typeof(Order));
            result2.FailureResult.Should().BeNull();
        }
コード例 #3
0
        public void Result2_GivenAFailure_WhenOnFailureBind_BindToOtherFailure()
        {
            var result = Result2 <Order, string> .Failed("error");

            var result2 = result.ConvertFailure(e => Result2 <Order, int> .Failed(e.Length));

            result2.IsFailure.Should().BeTrue();
            result2.FailureResult.Should().Be(5);
            result2.SuccessResult.Should().BeNull();
        }
コード例 #4
0
        public void Result2_OnFailureActionTest()
        {
            string output = null;
            var    result = Result2 <Order, string> .Failed("error");

            var result2 = result.OnFailure(e => { output = e.ToUpper(); });

            result2.IsFailure.Should().BeTrue();
            output.Should().Be("ERROR");
        }
コード例 #5
0
 private Result2 <Product, string[]> GetProductResult(int productId)
 {
     try
     {
         return(Result2 <Product, string[]> .Succeeded(Repository.GetProduct(productId)));
     }
     catch (Exception ex)
     {
         return(Result2 <Product, string[]> .Failed(new[] { ex.Message }));
     }
 }
コード例 #6
0
 private Result2 <Customer, string[]> GetCustomerResult(int customerId)
 {
     try
     {
         return(Result2 <Customer, string[]> .Succeeded(Repository.GetCustomer(customerId)));
     }
     catch (Exception ex)
     {
         return(Result2 <Customer, string[]> .Failed(new[] { ex.Message }));
     }
 }
コード例 #7
0
        private Result2 <OrderUpdateResult, string[]> UpdateModifiedOrder(Order order)
        {
            try
            {
                if (Repository.UpdateOrder(order))
                {
                    return(Result2 <OrderUpdateResult, string[]> .Succeeded(OrderUpdateResult.OK));
                }

                return(Result2 <OrderUpdateResult, string[]> .Failed(new[] { "Failed to Update Order" }));
            }
            catch (Exception e)
            {
                return(Result2 <OrderUpdateResult, string[]> .Failed(new[] { e.Message }));
            }
        }
コード例 #8
0
        private Result2 <Order, string[]> GetOrderResult(int orderId)
        {
            try
            {
                Order order = Repository.GetOrder(orderId);
                if (order != null)
                {
                    return(Result2 <Order, string[]> .Succeeded(order));
                }

                return(Result2 <Order, string[]> .Failed(new [] { $"Order with id {orderId} does not exist." }));
            }
            catch (Exception ex)
            {
                return(Result2 <Order, string[]> .Failed(new[] { ex.Message }));
            }
        }
コード例 #9
0
        public void Result2_GivenTwoDifferentFailureType_ConvertToOtherFailure()
        {
            // The code below will not return a Result2<Customer, int> on failure
            // var result =
            //    Result2<Order, string>.Failed("error")
            //        .OnSuccess(o => Result2<Customer, int>.Succeeded(new Customer()));
            //
            // result.FailureResult.Should().Be(-1)
            // will not compile unless a ConvertFailure is added to the chain.
            //
            var result =
                Result2 <Order, string> .Failed("error")
                .ConvertFailure(e => Result2 <Order, int> .Failed(-1))    // bind
                .OnSuccess(o => Result2 <Customer, int> .Succeeded(new Customer()));

            result.IsFailure.Should().BeTrue();
            result.FailureResult.Should().Be(-1);
        }
コード例 #10
0
 private Result2 <string, string[]> StringFailure()
 {
     return(Result2 <string, string[]> .Failed(new[] { "error" }));
 }
コード例 #11
0
 private Result2 <bool, string[]> BoolFailure()
 {
     return(Result2 <bool, string[]> .Failed(new [] { "error" }));
 }