feat: initial project commit
All checks were successful
default / default (8.0) (push) Successful in 1m7s
All checks were successful
default / default (8.0) (push) Successful in 1m7s
This commit is contained in:
commit
30ef7bd477
40 changed files with 3752 additions and 0 deletions
183
src/Result.Tests/ResultMatchingTests.cs
Normal file
183
src/Result.Tests/ResultMatchingTests.cs
Normal file
|
@ -0,0 +1,183 @@
|
|||
namespace Geekeey.Extensions.Result.Tests;
|
||||
|
||||
[TestFixture]
|
||||
internal sealed class ResultMatchingTests
|
||||
{
|
||||
[Test]
|
||||
public void Match_CallsSuccessFunc_ForSuccess()
|
||||
{
|
||||
var result = Success(2);
|
||||
var match = result.Match(
|
||||
v => v,
|
||||
_ => throw new InvalidOperationException());
|
||||
|
||||
Assert.That(match, Is.EqualTo(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Match_CallsFailureFunc_ForFailure()
|
||||
{
|
||||
var result = Failure<int>("error");
|
||||
var match = result.Match(
|
||||
_ => throw new InvalidOperationException(),
|
||||
e => e);
|
||||
|
||||
Assert.That(match.Message, Is.EqualTo("error"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Switch_CallsSuccessAction_ForSuccess()
|
||||
{
|
||||
var called = false;
|
||||
|
||||
var result = Success(2);
|
||||
result.Switch(
|
||||
v =>
|
||||
{
|
||||
Assert.That(v, Is.EqualTo(2));
|
||||
called = true;
|
||||
},
|
||||
_ => throw new InvalidOperationException()
|
||||
);
|
||||
|
||||
Assert.That(called, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Switch_CallsFailureAction_ForFailure()
|
||||
{
|
||||
var called = false;
|
||||
|
||||
var result = Failure<int>("error");
|
||||
result.Switch(
|
||||
_ => throw new InvalidOperationException(),
|
||||
e =>
|
||||
{
|
||||
called = true;
|
||||
Assert.That(e.Message, Is.EqualTo("error"));
|
||||
}
|
||||
);
|
||||
|
||||
Assert.That(called, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task MatchAsync_CallsSuccessFunc_ForSuccess_Task()
|
||||
{
|
||||
var result = Success(2);
|
||||
var match = await result.MatchAsync(
|
||||
Task.FromResult,
|
||||
_ => throw new InvalidOperationException());
|
||||
|
||||
Assert.That(match, Is.EqualTo(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task MatchAsync_CallsFailureFunc_ForFailure_Task()
|
||||
{
|
||||
var result = Failure<int>("error");
|
||||
var match = await result.MatchAsync(
|
||||
_ => throw new InvalidOperationException(),
|
||||
Task.FromResult);
|
||||
|
||||
Assert.That(match.Message, Is.EqualTo("error"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task SwitchAsync_CallsSuccessAction_ForSuccess_Task()
|
||||
{
|
||||
var called = false;
|
||||
|
||||
var result = Success(2);
|
||||
await result.SwitchAsync(
|
||||
v =>
|
||||
{
|
||||
Assert.That(v, Is.EqualTo(2));
|
||||
called = true;
|
||||
return Task.CompletedTask;
|
||||
},
|
||||
_ => throw new InvalidOperationException()
|
||||
);
|
||||
|
||||
Assert.That(called, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task SwitchAsync_CallsFailureAction_ForFailure_Task()
|
||||
{
|
||||
var called = false;
|
||||
|
||||
var result = Failure<int>("error");
|
||||
await result.SwitchAsync(
|
||||
_ => throw new InvalidOperationException(),
|
||||
e =>
|
||||
{
|
||||
called = true;
|
||||
Assert.That(e.Message, Is.EqualTo("error"));
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
);
|
||||
|
||||
Assert.That(called, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task MatchAsync_CallsSuccessFunc_ForSuccess_ValueTask()
|
||||
{
|
||||
var result = Success(2);
|
||||
var match = await result.MatchAsync(
|
||||
ValueTask.FromResult,
|
||||
_ => throw new InvalidOperationException());
|
||||
|
||||
Assert.That(match, Is.EqualTo(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task MatchAsync_CallsFailureFunc_ForFailure_ValueTask()
|
||||
{
|
||||
var result = Failure<int>("error");
|
||||
var match = await result.MatchAsync(
|
||||
_ => throw new InvalidOperationException(),
|
||||
ValueTask.FromResult);
|
||||
|
||||
Assert.That(match.Message, Is.EqualTo("error"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task SwitchAsync_CallsSuccessAction_ForSuccess_ValueTask()
|
||||
{
|
||||
var called = false;
|
||||
|
||||
var result = Success(2);
|
||||
await result.SwitchAsync(
|
||||
v =>
|
||||
{
|
||||
Assert.That(v, Is.EqualTo(2));
|
||||
called = true;
|
||||
return ValueTask.CompletedTask;
|
||||
},
|
||||
_ => throw new InvalidOperationException()
|
||||
);
|
||||
|
||||
Assert.That(called, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task SwitchAsync_CallsFailureAction_ForFailure_ValueTask()
|
||||
{
|
||||
var called = false;
|
||||
|
||||
var result = Failure<int>("error");
|
||||
await result.SwitchAsync(
|
||||
_ => throw new InvalidOperationException(),
|
||||
e =>
|
||||
{
|
||||
called = true;
|
||||
Assert.That(e.Message, Is.EqualTo("error"));
|
||||
return ValueTask.CompletedTask;
|
||||
}
|
||||
);
|
||||
|
||||
Assert.That(called, Is.True);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue