Ejemplo n.º 1
0
        public static void FromError1()
        {
            var nok = Fallible.FromError(Error);

            Assert.True(nok.IsError);
            Assert.False(nok.IsSuccess);
        }
Ejemplo n.º 2
0
        public static void ToExceptionInfo2()
        {
            var nok    = Fallible.FromError(Error);
            var result = nok.ToExceptionInfo();

            Assert.Equal(Error, result);
        }
Ejemplo n.º 3
0
        public static void Equality3()
        {
            var ok  = Fallible.Ok;
            var nok = Fallible.FromError(Error);

            Assert.True(nok != ok);
        }
Ejemplo n.º 4
0
        public static void GetHashCode2()
        {
            var nok1 = Fallible.FromError(Error);
            var nok2 = Fallible.FromError(Error);

            Assert.Equal(nok1.GetHashCode(), nok2.GetHashCode());
        }
Ejemplo n.º 5
0
        public static void cast2()
        {
            var nok    = Fallible.FromError(Error);
            var result = (ExceptionDispatchInfo)nok;

            Assert.Equal(Error, result);
        }
Ejemplo n.º 6
0
        public static void Deconstruct2()
        {
            var nok = Fallible.FromError(Error);

            var(succeed, err) = nok;
            Assert.False(succeed);
            Assert.Same(Error, err);
        }
Ejemplo n.º 7
0
        public static void Deconstruct2()
        {
            var nok = Fallible <Obj> .FromError(Error);

            var(succeed, value, err) = nok;
            Assert.False(succeed);
            Assert.Same(Error, err);
            Assert.Null(value);
        }
Ejemplo n.º 8
0
 public Fallible <TResult> ZipWith <TSecond, TResult>(
     Fallible <TSecond> second,
     Func <T, TSecond, TResult> zipper)
 {
     Require.NotNull(zipper, nameof(zipper));
     return(IsError && second.IsError
         ? Fallible <TResult> .FromError(Error)
         : Fallible <TResult> .η(zipper(Value, second.Value)));
 }
Ejemplo n.º 9
0
        public static void ValueOrElse_ReturnsOther_IfError()
        {
            var nok = Fallible <Obj> .FromError(Error);

            var exp = new Obj();

            Assert.Same(exp, nok.ValueOrElse(exp));
            Assert.Same(exp, nok.ValueOrElse(() => exp));
        }
Ejemplo n.º 10
0
        public static void ThrowIfError2()
        {
            var nok = Fallible.FromError(Error);
            var ex  = Record.Exception(() => nok.ThrowIfError());

            Assert.NotNull(ex);
            Assert.IsType <SimpleException>(ex);
            Assert.Equal(ErrorMessage, ex.Message);
        }
Ejemplo n.º 11
0
        public static void Equals1()
        {
            var ok = Fallible.Ok;

            Assert.True(ok.Equals(ok));

            var nok = Fallible.FromError(Error);

            Assert.True(nok.Equals(nok));
        }
Ejemplo n.º 12
0
        public static void Equals3()
        {
            var ok = Fallible.Ok;

            Assert.False(ok.Equals(new Obj()));

            var nok = Fallible.FromError(Error);

            Assert.False(nok.Equals(new Obj()));
        }
Ejemplo n.º 13
0
        public static void ToString1()
        {
            var ok = Fallible.Ok;

            Assert.Equal("Success", ok.ToString());

            var nok = Fallible.FromError(Error);

            Assert.Contains(Error.ToString(), nok.ToString(), StringComparison.OrdinalIgnoreCase);
        }
Ejemplo n.º 14
0
        public static void ValueOrElse0()
        {
            var ok = Fallible.Of(new Obj());

            Assert.Throws <ArgumentNullException>("valueFactory", () => ok.ValueOrElse((Func <Obj>)null));

            var nok = Fallible <Obj> .FromError(Error);

            Assert.Throws <ArgumentNullException>("valueFactory", () => nok.ValueOrElse((Func <Obj>)null));
        }
Ejemplo n.º 15
0
        public static void GetHashCode1()
        {
            var nok = Fallible.FromError(Error);

            Assert.Equal(nok.GetHashCode(), nok.GetHashCode());

            var ok = Fallible.Ok;

            Assert.Equal(ok.GetHashCode(), ok.GetHashCode());
        }
Ejemplo n.º 16
0
        public static void ToString1()
        {
            var value = new Obj("My value");
            var ok    = Fallible.Of(value);

            Assert.Contains(value.ToString(), ok.ToString(), StringComparison.OrdinalIgnoreCase);

            var nok = Fallible <Obj> .FromError(Error);

            Assert.Contains(Error.ToString(), nok.ToString(), StringComparison.OrdinalIgnoreCase);
        }
Ejemplo n.º 17
0
        public static void GetHashCode3()
        {
            var nok1 = Fallible.FromError(Error);
            var nok2 = Fallible.FromError(Error1);

            Assert.NotEqual(nok1.GetHashCode(), nok2.GetHashCode());

            var ok = Fallible.Ok;

            Assert.NotEqual(nok1.GetHashCode(), ok.GetHashCode());
        }
Ejemplo n.º 18
0
        public static void ValueOrThrow_Throws_IfError()
        {
            var nok = Fallible <Obj> .FromError(Error);

            Action act = () => nok.ValueOrThrow();
            var    ex  = Record.Exception(act);

            Assert.NotNull(ex);
            Assert.IsType <SimpleException>(ex);
            Assert.Equal(ErrorMessage, ex.Message);
        }
Ejemplo n.º 19
0
        public static void Equals4()
        {
            var ok   = Fallible.Ok;
            var nok  = Fallible.FromError(Error);
            var nok1 = Fallible.FromError(Error1);
            var nok2 = Fallible.FromError(Error1);

            Assert.False(ok.Equals(nok));
            Assert.False(nok1.Equals(nok));
            Assert.True(nok1.Equals(nok2));
        }
Ejemplo n.º 20
0
        public static void Equality1()
        {
            var nok1 = Fallible.FromError(Error);
            var nok2 = Fallible.FromError(Error);

            Assert.True(nok1 == nok2);
            Assert.False(nok1 != nok2);

            var nok3 = Fallible.FromError(Error);
            var nok4 = Fallible.FromError(Error1);

            Assert.False(nok3 == nok4);
            Assert.True(nok3 != nok4);
        }
Ejemplo n.º 21
0
        public static Fallible <TResult> TryWith <TResult>(Func <TResult> func)
        {
            Require.NotNull(func, nameof(func));

            try
            {
                return(Of(func()));
            }
            catch (Exception ex)
            {
                var edi = ExceptionDispatchInfo.Capture(ex);
                return(Fallible <TResult> .FromError(edi));
            }
        }
Ejemplo n.º 22
0
        public static void GetHashCode2()
        {
            var nok1 = Fallible <Obj> .FromError(Error);

            var nok2 = Fallible <Obj> .FromError(Error);

            Assert.Equal(nok1.GetHashCode(), nok2.GetHashCode());
            Assert.Equal(nok1.GetHashCode(EqualityComparer <Obj> .Default), nok2.GetHashCode(EqualityComparer <Obj> .Default));

            var ok1 = Fallible.Of(Tuple.Create("1"));
            var ok2 = Fallible.Of(Tuple.Create("1"));

            Assert.Equal(ok1.GetHashCode(), ok2.GetHashCode());
            Assert.Equal(ok1.GetHashCode(EqualityComparer <Tuple <string> > .Default), ok2.GetHashCode(EqualityComparer <Tuple <string> > .Default));
        }
Ejemplo n.º 23
0
        public static void GetHashCode1()
        {
            var nok = Fallible <Obj> .FromError(Error);

            Assert.Equal(nok.GetHashCode(), nok.GetHashCode());
            Assert.Equal(nok.GetHashCode(EqualityComparer <Obj> .Default), nok.GetHashCode(EqualityComparer <Obj> .Default));

            var ok1 = Fallible.Of(new Obj());

            Assert.Equal(ok1.GetHashCode(), ok1.GetHashCode());
            Assert.Equal(ok1.GetHashCode(EqualityComparer <Obj> .Default), ok1.GetHashCode(EqualityComparer <Obj> .Default));

            var ok2 = Fallible.Of(1);

            Assert.Equal(ok2.GetHashCode(), ok2.GetHashCode());
            Assert.Equal(ok2.GetHashCode(EqualityComparer <int> .Default), ok2.GetHashCode(EqualityComparer <int> .Default));
        }
Ejemplo n.º 24
0
        public static void GetHashCode3()
        {
            var nok1 = Fallible <int> .FromError(Error);

            var nok2 = Fallible <int> .FromError(Error1);

            Assert.NotEqual(nok1.GetHashCode(), nok2.GetHashCode());
            Assert.NotEqual(nok1.GetHashCode(EqualityComparer <int> .Default), nok2.GetHashCode(EqualityComparer <int> .Default));

            var ok1 = Fallible.Of(1);
            var ok2 = Fallible.Of(2);

            Assert.NotEqual(ok1.GetHashCode(), ok2.GetHashCode());
            Assert.NotEqual(ok1.GetHashCode(EqualityComparer <int> .Default), ok2.GetHashCode(EqualityComparer <int> .Default));

            Assert.NotEqual(ok1.GetHashCode(), nok1.GetHashCode());
            Assert.NotEqual(ok1.GetHashCode(EqualityComparer <int> .Default), nok1.GetHashCode(EqualityComparer <int> .Default));
        }
Ejemplo n.º 25
0
        public static Fallible <TResult> TryFinally <TResult>(Func <TResult> func, Action finallyAction)
        {
            Require.NotNull(func, nameof(func));
            Require.NotNull(finallyAction, nameof(finallyAction));

            try
            {
                return(Of(func()));
            }
            catch (Exception ex)
            {
                var edi = ExceptionDispatchInfo.Capture(ex);
                return(Fallible <TResult> .FromError(edi));
            }
            finally
            {
                finallyAction();
            }
        }
Ejemplo n.º 26
0
        public Fallible <TResult> SelectMany <TMiddle, TResult>(
            Func <T, Fallible <TMiddle> > selector,
            Func <T, TMiddle, TResult> resultSelector)
        {
            Require.NotNull(selector, nameof(selector));
            Require.NotNull(resultSelector, nameof(resultSelector));

            if (IsError)
            {
                return(Fallible <TResult> .FromError(Error));
            }
            var middle = selector(Value);

            if (middle.IsError)
            {
                return(Fallible <TResult> .FromError(Error));
            }
            return(Fallible <TResult> .η(resultSelector(Value, middle.Value)));
        }
Ejemplo n.º 27
0
        public static void ValueOrDefault_ReturnsDefault_IfError()
        {
            var nok = Fallible <Obj> .FromError(Error);

            Assert.Same(default(Obj), nok.ValueOrDefault());
        }
Ejemplo n.º 28
0
 public static void FromError0()
 => Assert.Throws <ArgumentNullException>("error", () => Fallible <int> .FromError(null));
Ejemplo n.º 29
0
        public static void FromError1()
        {
            var result = Fallible <int> .FromError(Error);

            Assert.True(result.IsError);
        }
Ejemplo n.º 30
0
        public static void ValueOrNone_ReturnsNone_IfError()
        {
            var nok = Fallible <Obj> .FromError(Error);

            Assert.True(nok.ValueOrNone().IsNone);
        }