< Summary

Information
Class: c:\Source 2025\CurrencyConverter\CurrencyConverter\src\Domain\Common\Result.cs
Assembly: Default
File(s): c:\Source 2025\CurrencyConverter\CurrencyConverter\src\Domain\Common\Result.cs
Line coverage
100%
Covered lines: 21
Uncovered lines: 0
Coverable lines: 21
Total lines: 44
Line coverage: 100%
Branch coverage
50%
Covered branches: 2
Total branches: 4
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

File(s)

c:\Source 2025\CurrencyConverter\CurrencyConverter\src\Domain\Common\Result.cs

#LineLine coverage
 1using System.Diagnostics.CodeAnalysis;
 2
 3namespace Domain.Common;
 4
 5public class Result
 6{
 6617    protected Result(bool isSuccess, Error error)
 6618    {
 6619        IsSuccess = isSuccess;
 66110        Error = error;
 66111    }
 12
 107713    public bool IsSuccess { get; }
 14
 21015    public bool IsFailure => !IsSuccess;
 16
 5017    public Error Error { get; }
 118    public static Result Success() => new(true, Error.None);
 19
 120    public static Result Failure(Error error) => new(false, error);
 62321    public static Result<TValue> Success<TValue>(TValue value) => new(value, true, Error.None);
 22
 3623    public static Result<TValue> Failure<TValue>(Error error) => new(default, false, error);
 24
 25    public static Result<TValue> Create<TValue>(TValue? value) =>
 62326        value is not null ? Success(value) : Failure<TValue>(Error.NotFound);
 27}
 28
 29public sealed class Result<TValue> : Result
 30{
 31    private readonly TValue? _value;
 32    internal Result(TValue? value, bool isSuccess, Error error)
 65933        : base(isSuccess, error)
 65934    {
 65935        _value = value;
 65936    }
 37
 38    [NotNull]
 60139    public TValue Value => IsSuccess
 60140        ? _value!
 60141        : throw new InvalidOperationException("The value of a failure result can not be accessed.");
 42
 62343    public static implicit operator Result<TValue>(TValue? value) => Create(value);
 44}