コード例 #1
0
        public void IComparable_Err_Inductive_Ok(bool useGenerics)
        {
            var a     = SimpleResult.Ok(0);
            var b     = SimpleResult.Ok(1);
            var c     = SimpleResult.Ok(2);
            var a_obj = (object)a;
            var b_obj = (object)b;
            var c_obj = (object)c;

            // act
            var abResult = useGenerics
                ? a.CompareTo(b)
                : a.CompareTo(b_obj);
            var bcResult = useGenerics
                ? b.CompareTo(c)
                : b.CompareTo(c_obj);
            var acResult = useGenerics
                ? a.CompareTo(c)
                : a.CompareTo(c_obj);

            // assert
            Assert.Equal(-1, abResult);
            Assert.Equal(-1, bcResult);
            Assert.Equal(-1, acResult);
        }
コード例 #2
0
        public void IComparable_Ok_Transitive_Ok(bool useGenerics)
        {
            // arrange
            var a     = SimpleResult.Ok(0);
            var a_obj = (object)a;
            var b     = SimpleResult.Ok(0);
            var b_obj = (object)b;
            var c     = SimpleResult.Ok(0);
            var c_obj = (object)c;

            // act
            var abResult = useGenerics
                ? a.CompareTo(b)
                : a.CompareTo(b_obj);
            var baResult = useGenerics
                ? b.CompareTo(a)
                : b.CompareTo(a_obj);
            var acResult = useGenerics
                ? a.CompareTo(c)
                : a.CompareTo(c_obj);

            // assert
            Assert.Equal(0, abResult);
            Assert.Equal(0, baResult);
            Assert.Equal(0, acResult);
        }
コード例 #3
0
        public void Implicit_Ok_OK()
        {
            // act
            var result = SimpleResult.Ok(7);

            // assert
            Assert.True(result.IsOk);
            Assert.False(result.IsErr);
        }
コード例 #4
0
        public void Explicit_Value_Ok()
        {
            // act
            var result = SimpleResult.Ok(7);

            // assert
            Assert.True(result.IsOk);
            Assert.False(result.IsErr);
            Assert.Equal <int>(7, (int)result);
        }
コード例 #5
0
        public static IEnumerable <object[]> GetUnequalPairs()
        {
            yield return(new[] { SimpleResult.Ok(7), SimpleResult.Ok(8) });

            yield return(new[] { SimpleResult.Ok(1), SimpleResult.Err("error") });

            yield return(new[] { SimpleResult.Err("err1"), SimpleResult.Ok(2) });

            yield return(new[] { SimpleResult.Err("err1"), SimpleResult.Err("err2") });
        }
コード例 #6
0
        public void UnwrapOk_AsError_Throw()
        {
            var result = SimpleResult.Ok(8);

            // act
            // assert
            Assert.True(result.IsOk);
            Assert.False(result.IsErr);
            Assert.Throws <InvalidOperationException>(() => result.UnsafelyUnwrapErr());
        }
コード例 #7
0
        public void UnwrapOrElse_Ok_Ok()
        {
            // arrange
            var r1 = SimpleResult.Ok(7);

            // act
            var r = r1.UnwrapOrElse(err => 0);

            // assert
            Assert.Equal(7, r);
        }
コード例 #8
0
        public void MapReturnOk_Ok()
        {
            // arrange
            var r1 = SimpleResult.Ok(0);

            // act
            var r = r1.MapReturn(i => i.ToString(), "default");

            // assert
            Assert.NotNull(r);
            Assert.Equal("0", r);
        }
コード例 #9
0
        public void  SelectErrOk_Ok()
        {
            // arrange
            var r1 = SimpleResult.Ok(0);

            // act
            var r = r1.SelectErr(error => Convert.ToInt16(error));

            // assert
            Assert.NotNull(r);
            Assert.True(r.IsOk);
        }
コード例 #10
0
        public void OrElse_Err()
        {
            // arrange
            var r1 = SimpleResult.Err("error");
            var r2 = SimpleResult.Ok(0);

            // act
            var r = r1.OrElse(() => r2);

            // assert
            Assert.Equal <SimpleResult>(r2, r);
        }
コード例 #11
0
        public void OrElse_Ok()
        {
            // arrange
            var r1 = SimpleResult.Ok(0);
            var r2 = SimpleResult.Ok(1);

            // act
            var r = r1.OrElse(() => r2);

            // assert
            Assert.Equal <SimpleResult>(r1, r);
        }
コード例 #12
0
        public void Or_ErrReturnsThat_Ok()
        {
            // arrange
            var r1 = SimpleResult.Err("error");
            var r2 = SimpleResult.Ok(0);

            // act
            var r = r1.Or(r2);

            // assert
            Assert.Equal(r2, r);
        }
コード例 #13
0
        public void Or_OkReturnsThis_Ok()
        {
            // arrange
            var r1 = SimpleResult.Ok(0);
            var r2 = SimpleResult.Ok(1);

            // act
            var r = r1.Or(r2);

            // assert
            Assert.Equal(r1, r);
        }
コード例 #14
0
        public void And_ErrReturnsThis_Ok()
        {
            // arrange
            var result    = SimpleResult.Err("error");
            var andResult = SimpleResult.Ok(0);

            // act
            var r = result.And(andResult);

            // assert
            Assert.Equal(result, r);
        }
コード例 #15
0
        public void And_OkReturnsAndResult_Ok()
        {
            // arrange
            var result    = SimpleResult.Ok(7);
            var andResult = SimpleResult.Ok(1);

            // act
            var r = result.And(andResult);

            // assert
            Assert.Equal(andResult, r);
        }
コード例 #16
0
        public void Select_Ok()
        {
            // arrange
            var r1 = SimpleResult.Ok(0);

            // act
            var r = r1.Select(value => value.ToString());

            // assert
            Assert.NotNull(r);
            Assert.True(r.IsOk);
            Assert.Equal("0", r.UnsafelyUnwrap());
        }
コード例 #17
0
        public void Bind_Ok()
        {
            // arrange
            var r1 = SimpleResult.Ok(0);

            // act
            var r = r1.AndThen(i => Result <float, string> .Ok(3.7f));

            // assert
            Assert.NotNull(r);
            Assert.True(r.IsOk);
            Assert.Equal(3.7f, r.UnsafelyUnwrap());
        }
コード例 #18
0
        public void IComparable_Ok_AtoA_Zero(bool useGenerics)
        {
            // arrange
            var a     = SimpleResult.Ok(0);
            var a_obj = (object)a;

            // act
            var result = useGenerics
                ? a.CompareTo(a)
                : a.CompareTo(a_obj);

            // assert
            Assert.Equal(0, result);
        }
コード例 #19
0
        public void Match_OkCallsOk_Ok()
        {
            // arrange
            var result = SimpleResult.Ok(7);

            // act
            var functionCalled = result.Match(
                ok: value => "ok",
                err: error => "error"
                );

            // Assert
            Assert.Equal("ok", functionCalled);
        }
コード例 #20
0
        public void IComparable_Ok_Inverse_Ok(bool useGenerics)
        {
            var a     = SimpleResult.Ok(0);
            var b     = SimpleResult.Ok(1);
            var a_obj = (object)a;
            var b_obj = (object)b;

            // act
            var abResult = useGenerics
                ? a.CompareTo(b)
                : a.CompareTo(b_obj);
            var baResult = useGenerics
                ? b.CompareTo(a)
                : b.CompareTo(a_obj);

            // assert
            Assert.Equal(-1, abResult);
            Assert.Equal(1, baResult);
        }
コード例 #21
0
        public static IEnumerable <object[]> GetResultTheoryData1()
        {
            yield return(new object[] { SimpleResult.Ok(7) });

            yield return(new object[] { SimpleResult.Err("test") });
        }
コード例 #22
0
        public static IEnumerable <object[]> GetToStringTests()
        {
            yield return(new object[] { SimpleResult.Ok(7), $"Ok<{7.GetType().Name}>[7]" });

            yield return(new object[] { SimpleResult.Err("error"), $"Err<{"error".GetType().Name}>[error]" });
        }