Skip to content

Commit

Permalink
Returned back deleted TapIf methods ( #433 Add ValueTask support )
Browse files Browse the repository at this point in the history
  • Loading branch information
vkhorikov committed Aug 22, 2022
1 parent fc68017 commit ba1b3a1
Show file tree
Hide file tree
Showing 9 changed files with 1,340 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
using FluentAssertions;
using Xunit;

namespace CSharpFunctionalExtensions.Tests.ResultTests.Extensions
{
public class TapIfAsyncBothTests : TapIfTestsBase
{
[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_AsyncBoth_executes_action_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result result = Result.SuccessIf(isSuccess, ErrorMessage);

var returned = result.AsTask().TapIf(condition, Task_Action).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncBoth_executes_action_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<T> result = Result.SuccessIf(isSuccess, T.Value, ErrorMessage);

var returned = result.AsTask().TapIf(condition, Task_Action).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncBoth_executes_action_T_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<T> result = Result.SuccessIf(isSuccess, T.Value, ErrorMessage);

var returned = result.AsTask().TapIf(condition, Task_Action_T).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_E_AsyncBoth_executes_action_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<T, E> result = Result.SuccessIf(isSuccess, T.Value, E.Value);

var returned = result.AsTask().TapIf(condition, Task_Action).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_E_AsyncBoth_executes_action_T_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<T, E> result = Result.SuccessIf(isSuccess, T.Value, E.Value);

var returned = result.AsTask().TapIf(condition, Task_Action_T).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncBoth_executes_action_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool> result = Result.SuccessIf(isSuccess, condition, ErrorMessage);

var returned = result.AsTask().TapIf(Predicate, Task_Action).Result;

predicateExecuted.Should().Be(isSuccess);
actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncBoth_executes_action_T_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool> result = Result.SuccessIf(isSuccess, condition, ErrorMessage);

var returned = result.AsTask().TapIf(Predicate, Task_Action_T).Result;

predicateExecuted.Should().Be(isSuccess);
actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_E_AsyncBoth_executes_action_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool, E> result = Result.SuccessIf(isSuccess, condition, E.Value);

var returned = result.AsTask().TapIf(Predicate, Task_Action).Result;

predicateExecuted.Should().Be(isSuccess);
actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_E_AsyncBoth_executes_action_T_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool, E> result = Result.SuccessIf(isSuccess, condition, E.Value);

var returned = result.AsTask().TapIf(Predicate, Task_Action_T).Result;

predicateExecuted.Should().Be(isSuccess);
actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
using FluentAssertions;
using Xunit;

namespace CSharpFunctionalExtensions.Tests.ResultTests.Extensions
{
public class TapIfAsyncLeftTests : TapIfTestsBase
{
[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_AsyncLeft_executes_action_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result result = Result.SuccessIf(isSuccess, ErrorMessage);

var returned = result.AsTask().TapIf(condition, Action).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncLeft_executes_action_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<T> result = Result.SuccessIf(isSuccess, T.Value, ErrorMessage);

var returned = result.AsTask().TapIf(condition, Action).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncLeft_executes_action_T_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<T> result = Result.SuccessIf(isSuccess, T.Value, ErrorMessage);

var returned = result.AsTask().TapIf(condition, Action_T).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_E_AsyncLeft_executes_action_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<T, E> result = Result.SuccessIf(isSuccess, T.Value, E.Value);

var returned = result.AsTask().TapIf(condition, Action).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_E_AsyncLeft_executes_action_T_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<T, E> result = Result.SuccessIf(isSuccess, T.Value, E.Value);

var returned = result.AsTask().TapIf(condition, Action_T).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncLeft_executes_func_result_T_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<bool> result = Result.SuccessIf(isSuccess, condition, ErrorMessage);

var returned = result.AsTask().TapIf(condition, Func_Result).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncLeft_executes_func_result_K_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<bool> result = Result.SuccessIf(isSuccess, condition, ErrorMessage);

var returned = result.AsTask().TapIf(condition, Func_Result_K).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncLeft_executes_func_result_K_E_conditionally_and_returns_self(bool isSuccess, bool condition)
{
Result<bool, E> result = Result.SuccessIf(isSuccess, condition, E.Value);

var returned = result.AsTask().TapIf(condition, Func_Result_K_E).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncLeft_executes_action_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool> result = Result.SuccessIf(isSuccess, condition, ErrorMessage);

var returned = result.AsTask().TapIf(Predicate, Action).Result;

predicateExecuted.Should().Be(isSuccess);
actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncLeft_executes_action_T_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool> result = Result.SuccessIf(isSuccess, condition, ErrorMessage);

var returned = result.AsTask().TapIf(Predicate, Action_T).Result;

predicateExecuted.Should().Be(isSuccess);
actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_E_AsyncLeft_executes_action_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool, E> result = Result.SuccessIf(isSuccess, condition, E.Value);

var returned = result.AsTask().TapIf(Predicate, Action).Result;

predicateExecuted.Should().Be(isSuccess);
actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_E_AsyncLeft_executes_action_T_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool, E> result = Result.SuccessIf(isSuccess, condition, E.Value);

var returned = result.AsTask().TapIf(Predicate, Action_T).Result;

predicateExecuted.Should().Be(isSuccess);
actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncLeft_executes_func_result_T_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool> result = Result.SuccessIf(isSuccess, condition, ErrorMessage);

var returned = result.AsTask().TapIf(Predicate, Func_Result).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncLeft_executes_func_result_K_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool> result = Result.SuccessIf(isSuccess, condition, ErrorMessage);

var returned = result.AsTask().TapIf(Predicate, Func_Result_K).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}

[Theory]
[InlineData(true, true)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(false, false)]
public void TapIf_T_AsyncLeft_executes_func_result_K_E_per_predicate_and_returns_self(bool isSuccess, bool condition)
{
Result<bool, E> result = Result.SuccessIf(isSuccess, condition, E.Value);

var returned = result.AsTask().TapIf(Predicate, Func_Result_K_E).Result;

actionExecuted.Should().Be(isSuccess && condition);
result.Should().Be(returned);
}
}
}
Loading

0 comments on commit ba1b3a1

Please sign in to comment.