This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<PackageId>MaybeError</PackageId>
|
||||
<Version>1.1.0</Version>
|
||||
<Version>1.2.0</Version>
|
||||
<Authors>Amatsugu</Authors>
|
||||
<PackageDescription>Errors as values</PackageDescription>
|
||||
<RepositoryUrl>https://github.com/Amatsugu/MaybeError</RepositoryUrl>
|
||||
|
||||
@@ -37,6 +37,20 @@ public static class MaybeExtensions
|
||||
return predicate(maybe.Value);
|
||||
}
|
||||
|
||||
public static ValueMaybe<T2, E> Map<T, T2, E>(this IValueMaybe<T, E> maybe, Func<T, T2> map) where T : struct where T2 : struct where E : Error
|
||||
{
|
||||
if (maybe.HasError)
|
||||
return maybe.Error;
|
||||
return map(maybe.Value);
|
||||
}
|
||||
|
||||
public static ValueMaybe<T, E2> MapError<T, E, E2>(this IValueMaybe<T, E> maybe, Func<E, E2> map) where T : struct where E : Error where E2 : Error
|
||||
{
|
||||
if (!maybe.HasError)
|
||||
return maybe.Value;
|
||||
return map(maybe.Error);
|
||||
}
|
||||
|
||||
|
||||
public static T ValueOrDefault<T, E>(this IMaybe<T, E> maybe, T defaultValue) where E : Error
|
||||
{
|
||||
@@ -71,4 +85,18 @@ public static class MaybeExtensions
|
||||
return predicate(maybe.Value);
|
||||
}
|
||||
|
||||
public static Maybe<T2, E> Map<T, T2, E>(this IMaybe<T, E> maybe, Func<T, T2> map) where E : Error
|
||||
{
|
||||
if (maybe.HasError)
|
||||
return maybe.Error;
|
||||
return map(maybe.Value);
|
||||
}
|
||||
|
||||
public static Maybe<T, E2> MapError<T, E, E2>(this IMaybe<T, E> maybe, Func<E, E2> map) where E : Error where E2 : Error
|
||||
{
|
||||
if (!maybe.HasError)
|
||||
return maybe.Value;
|
||||
return map(maybe.Error);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -115,4 +115,40 @@ public class MaybeTests
|
||||
value = new InvalidOperationException();
|
||||
Assert.That(value.AsOrDefault(v => v.Length, -4), Is.EqualTo(-4));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MapTest()
|
||||
{
|
||||
Maybe<string> value = "Test";
|
||||
var valueMapped = value.Map(v => $"A{v}");
|
||||
Assert.That(valueMapped.HasValue, Is.True);
|
||||
Assert.That(valueMapped.Value, Is.EqualTo("ATest"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MapTestError()
|
||||
{
|
||||
Maybe<string> value = new Error("Err");
|
||||
var valueMapped = value.Map(v => $"A{v}");
|
||||
Assert.That(valueMapped.HasError, Is.True);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void MapErrorTest()
|
||||
{
|
||||
Maybe<string> value = "Test";
|
||||
var valueMapped = value.MapError(v => new Error($"A{v}"));
|
||||
Assert.That(valueMapped.HasValue, Is.True);
|
||||
Assert.That(valueMapped.Value, Is.EqualTo("Test"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MapErrorTestError()
|
||||
{
|
||||
Maybe<string> value = new Error("Err");
|
||||
var valueMapped = value.MapError(v => new Error($"A{v.Message}"));
|
||||
Assert.That(valueMapped.HasError, Is.True);
|
||||
Assert.That(valueMapped.Error!.Message, Is.EqualTo("AErr"));
|
||||
}
|
||||
}
|
||||
@@ -115,4 +115,40 @@ public class ValueMaybeTests
|
||||
value = new InvalidOperationException();
|
||||
Assert.That(value.AsOrDefault(v => v.ToString(), "err"), Is.EqualTo("err"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MapTest()
|
||||
{
|
||||
ValueMaybe<int> value = 1;
|
||||
var valueMapped = value.Map(v => v + 1);
|
||||
Assert.That(valueMapped.HasValue, Is.True);
|
||||
Assert.That(valueMapped.Value, Is.EqualTo(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MapTestError()
|
||||
{
|
||||
ValueMaybe<int> value = new Error("Err");
|
||||
var valueMapped = value.Map(v => v + 1);
|
||||
Assert.That(valueMapped.HasError, Is.True);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void MapErrorTest()
|
||||
{
|
||||
Maybe<int> value = 1;
|
||||
var valueMapped = value.MapError(v => new Error($"A{v}"));
|
||||
Assert.That(valueMapped.HasValue, Is.True);
|
||||
Assert.That(valueMapped.Value, Is.EqualTo(1));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MapErrorTestError()
|
||||
{
|
||||
ValueMaybe<int> value = new Error("Err");
|
||||
var valueMapped = value.MapError(v => new Error($"A{v.Message}"));
|
||||
Assert.That(valueMapped.HasError, Is.True);
|
||||
Assert.That(valueMapped.Error!.Message, Is.EqualTo("AErr"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user