예제 #1
0
        public static void ValueOrThrow_ReturnsValue_IfSuccess()
        {
            var exp = new Obj();
            var ok  = Fallible.Of(exp);

            Assert.Same(exp, ok.ValueOrThrow());
        }
예제 #2
0
        public static void ValueOrElse_ReturnsValue_IfSuccess()
        {
            var exp   = new Obj();
            var ok    = Fallible.Of(exp);
            var other = new Obj("other");

            Assert.Same(exp, ok.ValueOrElse(other));
            Assert.Same(exp, ok.ValueOrElse(() => other));
        }
예제 #3
0
        public static void Deconstruct1()
        {
            var exp = new Obj();
            var ok  = Fallible.Of(exp);

            var(succeed, value, err) = ok;
            Assert.True(succeed);
            Assert.Null(err);
            Assert.Same(exp, value);
        }
예제 #4
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));
        }
예제 #5
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);
        }
예제 #6
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));
        }
예제 #7
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));
        }
예제 #8
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));
        }
예제 #9
0
        public static void ThrowIfError1()
        {
            var ok = Fallible.Of(new Obj());

            Assert.DoesNotThrow(() => ok.ThrowIfError());
        }
예제 #10
0
        public static void Of1()
        {
            var result = Fallible.Of(1);

            Assert.True(result.IsSuccess);
        }
예제 #11
0
        public static void ValueOrNone_ReturnsSome_IfSuccess()
        {
            var ok = Fallible.Of(new Obj());

            Assert.True(ok.ValueOrNone().IsSome);
        }