feat: initial project commit
All checks were successful
default / default (8.0) (push) Successful in 1m7s

This commit is contained in:
Louis Seubert 2024-04-14 17:42:13 +02:00
commit 30ef7bd477
Signed by: louis9902
GPG key ID: 4B9DB28F826553BD
40 changed files with 3752 additions and 0 deletions

View 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);
}
}