示例#1
0
        public void UnwrapOrElseReturnsFallbackForNone()
        {
            var none    = Option.None <string>();
            var counter = DelegateHelpers.TrackInvocationCount(() => "else");

            Assert.AreEqual("else", none.UnwrapOrElse(counter.WrappedDelegate));
            Assert.AreEqual(1, counter.InvocationCount);
        }
示例#2
0
        public void UnwrapOrElseReturnsValueForSome()
        {
            var some    = Option.Some("some");
            var counter = DelegateHelpers.TrackInvocationCount(() => "else");

            Assert.AreEqual("some", some.UnwrapOrElse(counter.WrappedDelegate));
            Assert.AreEqual(0, counter.InvocationCount);
        }
示例#3
0
        public void AndThenReturnsInvocationResultForOk()
        {
            var ok = Ok;
            var op =
                DelegateHelpers.TrackInvocationCount((string s) => Result.Ok <int, int>(s.Length));

            Assert.AreEqual(Result.Ok <int, int>(OkValue.Length), ok.AndThen(op.WrappedDelegate));
            Assert.AreEqual(1, op.InvocationCount);
        }
示例#4
0
        public void MapOrReturnsFallbackForNone()
        {
            var none    = Option.None <string>();
            var counter =
                DelegateHelpers.TrackInvocationCount((string s) => s.Length);

            Assert.AreEqual(8, none.MapOr(8, counter.WrappedDelegate));
            Assert.AreEqual(0, counter.InvocationCount);
        }
示例#5
0
        public void AndThenReturnsErrorResultWithErrorValueForErr()
        {
            var err = Err;
            var op  =
                DelegateHelpers.TrackInvocationCount((string s) => Result.Ok <int, int>(s.Length));

            Assert.AreEqual(Result.Err <int, int>(ErrValue), err.AndThen(op.WrappedDelegate));
            Assert.AreEqual(0, op.InvocationCount);
        }
示例#6
0
        public void OrThenReturnsFirstResultForOk()
        {
            var ok1     = Result.Ok <string, int>(OkValue + '1');
            var ok2Func =
                DelegateHelpers.TrackInvocationCount((int err) => Result.Err <string, int>(err * err));

            Assert.AreEqual(ok1, ok1.OrThen(ok2Func.WrappedDelegate));
            Assert.AreEqual(0, ok2Func.InvocationCount);
        }
示例#7
0
        public void UnwrapOrElseReturnsOkValueForOk()
        {
            var ok           = Ok;
            var fallbackFunc =
                DelegateHelpers.TrackInvocationCount(() => "fallback");

            Assert.AreEqual(OkValue, ok.UnwrapOrElse(fallbackFunc.WrappedDelegate));
            Assert.AreEqual(0, fallbackFunc.InvocationCount);
        }
示例#8
0
        public void AndThenReturnsInvocationFunctionResultForSome()
        {
            var some        = Option.Some("some");
            var funcCounter =
                DelegateHelpers.TrackInvocationCount((string s) => Option.Some(s.Length));

            Assert.AreEqual(Option.Some(4), some.AndThen(funcCounter.WrappedDelegate));
            Assert.AreEqual(1, funcCounter.InvocationCount);
        }
示例#9
0
        public void AndThenReturnsNoneForNone()
        {
            var none        = Option.None <string>();
            var funcCounter =
                DelegateHelpers.TrackInvocationCount((string s) => Option.Some(s.Length));

            Assert.AreEqual(Option.None <int>(), none.AndThen(funcCounter.WrappedDelegate));
            Assert.AreEqual(0, funcCounter.InvocationCount);
        }
示例#10
0
        public void UnwrapOrElseReturnsFallbackFunctionInvocationResultForErr()
        {
            var err          = Err;
            var fallbackFunc =
                DelegateHelpers.TrackInvocationCount(() => "fallback");

            Assert.AreEqual("fallback", err.UnwrapOrElse(fallbackFunc.WrappedDelegate));
            Assert.AreEqual(1, fallbackFunc.InvocationCount);
        }
示例#11
0
        public void MapReturnsInvocationResultForSome()
        {
            var some    = Option.Some("some");
            var counter =
                DelegateHelpers.TrackInvocationCount((string s) => s.Length);

            Assert.AreEqual(Option.Some(4), some.Map(counter.WrappedDelegate));
            Assert.AreEqual(1, counter.InvocationCount);
        }
示例#12
0
        public void FilterReturnsNoneForNone()
        {
            var none          = Option.None <string>();
            var filterCounter =
                DelegateHelpers.TrackInvocationCount((string s) => s.Equals("a", StringComparison.Ordinal));

            Assert.AreEqual(none, none.Filter(filterCounter.WrappedDelegate));
            Assert.AreEqual(0, filterCounter.InvocationCount);
        }
示例#13
0
        public void FilterReturnsNoneWhenPredicateDoesNotPassesOnSome()
        {
            var some          = Option.Some("some");
            var filterCounter =
                DelegateHelpers.TrackInvocationCount((string s) => s.Equals("a", StringComparison.Ordinal));

            Assert.AreEqual(Option.None <string>(), some.Filter(filterCounter.WrappedDelegate));
            Assert.AreEqual(1, filterCounter.InvocationCount);
        }
示例#14
0
        public void MapOrReturnsInvocationResultForOk()
        {
            var ok             = Ok;
            var mapFuncCounter =
                DelegateHelpers.TrackInvocationCount <string, int>(str => str.Length);

            var mapped = ok.MapOr(-1, mapFuncCounter.WrappedDelegate);

            Assert.AreEqual(1, mapFuncCounter.InvocationCount);
            Assert.AreEqual(OkValue.Length, mapped);
        }
示例#15
0
        public void MapOrReturnsFallbackForErr()
        {
            var err            = Err;
            var mapFuncCounter =
                DelegateHelpers.TrackInvocationCount <string, int>(str => str.Length);

            var mapped = err.MapOr(-1, mapFuncCounter.WrappedDelegate);

            Assert.AreEqual(0, mapFuncCounter.InvocationCount);
            Assert.AreEqual(-1, mapped);
        }
示例#16
0
        public void MapReturnsErrResultForErr()
        {
            var err            = Err;
            var mapFuncCounter =
                DelegateHelpers.TrackInvocationCount <string, int>(str => str.Length);

            var mappedErr = err.Map(mapFuncCounter.WrappedDelegate);

            Assert.AreEqual(0, mapFuncCounter.InvocationCount);
            Assert.IsTrue(mappedErr.IsErr);
            Assert.AreEqual(ErrValue, mappedErr.Err.Value);
        }
示例#17
0
        public void MapOrElseReturnsInvocationResultForSome()
        {
            var some            = Option.Some("some");
            var fallbackCounter =
                DelegateHelpers.TrackInvocationCount(() => 8);
            var funcCounter =
                DelegateHelpers.TrackInvocationCount((string s) => s.Length);

            Assert.AreEqual(4, some.MapOrElse(fallbackCounter.WrappedDelegate, funcCounter.WrappedDelegate));
            Assert.AreEqual(0, fallbackCounter.InvocationCount);
            Assert.AreEqual(1, funcCounter.InvocationCount);
        }
示例#18
0
        public void MapOrElseReturnsFallbackInvocationResultForNone()
        {
            var none            = Option.None <string>();
            var fallbackCounter =
                DelegateHelpers.TrackInvocationCount(() => 8);
            var funcCounter =
                DelegateHelpers.TrackInvocationCount((string s) => s.Length);

            Assert.AreEqual(8, none.MapOrElse(fallbackCounter.WrappedDelegate, funcCounter.WrappedDelegate));
            Assert.AreEqual(1, fallbackCounter.InvocationCount);
            Assert.AreEqual(0, funcCounter.InvocationCount);
        }
示例#19
0
        public void MapErrReturnsOkResultForOk()
        {
            var ok          = Ok;
            var funcCounter =
                DelegateHelpers.TrackInvocationCount <int, int>(n => n * n);

            var mappedOk = ok.MapErr(funcCounter.WrappedDelegate);

            Assert.AreEqual(0, funcCounter.InvocationCount);
            Assert.IsTrue(mappedOk.IsOk);
            Assert.AreEqual(OkValue, mappedOk.Ok.Value);
        }
示例#20
0
        public void MapErrReturnsInvocationResultForErr()
        {
            var err         = Err;
            var funcCounter =
                DelegateHelpers.TrackInvocationCount <int, int>(n => n * n);

            var mappedErr = err.MapErr(funcCounter.WrappedDelegate);

            Assert.AreEqual(1, funcCounter.InvocationCount);
            Assert.IsTrue(mappedErr.IsErr);
            Assert.AreEqual(ErrValue * ErrValue, mappedErr.Err.Value);
        }
示例#21
0
        public void OrElseReturnsResultOfInvocationIfNone()
        {
            var none = Option.None <string>();
            var some = Option.Some("some");

            var funcSome =
                DelegateHelpers.TrackInvocationCount(() => some);
            var funcNone =
                DelegateHelpers.TrackInvocationCount(() => none);

            Assert.AreEqual(some, none.OrElse(funcSome.WrappedDelegate));
            Assert.AreEqual(1, funcSome.InvocationCount);
            Assert.AreEqual(none, none.OrElse(funcNone.WrappedDelegate));
            Assert.AreEqual(1, funcNone.InvocationCount);
        }
示例#22
0
        public void OrThenReturnsFirsOptionIfSome()
        {
            var some1 = Option.Some("some1");
            var some2 = Option.Some("some2");
            var none  = Option.None <string>();

            var funcSome2Counter =
                DelegateHelpers.TrackInvocationCount(() => some2);
            var funcNoneCounter =
                DelegateHelpers.TrackInvocationCount(() => none);

            Assert.AreEqual(some1, some1.OrElse(funcSome2Counter.WrappedDelegate));
            Assert.AreEqual(0, funcSome2Counter.InvocationCount);
            Assert.AreEqual(some1, some1.OrElse(funcNoneCounter.WrappedDelegate));
            Assert.AreEqual(0, funcNoneCounter.InvocationCount);
        }
示例#23
0
        public void TrackInvocationCountImplementedCorrectlyForFunc( )
        {
            var callCount = 0;
            DelegateInvocationCounter <Func <Int32> > counter = DelegateHelpers.TrackInvocationCount <Int32> (() =>
            {
                callCount++;
                return(12 + callCount);
            });

            for (var i = 1; i < 6; i++)
            {
                var ret = counter.WrappedDelegate( );

                Assert.AreEqual(i, counter.InvocationCount);
                Assert.AreEqual(i, callCount);
                Assert.AreEqual(12 + i, ret);
            }
        }
示例#24
0
        public void TrackInvocationCountImplementedCorrectlyForAction( )
        {
            var callCount = 0;
            DelegateInvocationCounter <Action> counter = DelegateHelpers.TrackInvocationCount(() =>
            {
                callCount++;
            });

            for (var i = 1; i < 6; i++)
            {
                counter.WrappedDelegate( );

                Assert.AreEqual(i, counter.InvocationCount);
                Assert.AreEqual(i, callCount);
            }

            counter.Reset( );
            Assert.AreEqual(0, counter.InvocationCount);
        }
示例#25
0
        public void TrackInvocationCountImplementedCorrectlyForAction01( )
        {
            var callCount = 0;
            DelegateInvocationCounter <Action <String> > counter = DelegateHelpers.TrackInvocationCount <String> ((arg1) =>
            {
                callCount++;
                Assert.AreEqual("arg1", arg1);
            });

            for (var i = 1; i < 6; i++)
            {
                counter.WrappedDelegate("arg1");

                Assert.AreEqual(i, counter.InvocationCount);
                Assert.AreEqual(i, callCount);
            }

            counter.Reset( );
            Assert.AreEqual(0, counter.InvocationCount);
        }
示例#26
0
        public void TrackInvocationCountImplementedCorrectlyForFunc02( )
        {
            var callCount = 0;
            DelegateInvocationCounter <Func <String, String, Int32> > counter = DelegateHelpers.TrackInvocationCount <String, String, Int32> ((arg1, arg2) =>
            {
                callCount++;
                Assert.AreEqual("arg1", arg1);
                Assert.AreEqual("arg2", arg2);
                return(12 + callCount);
            });

            for (var i = 1; i < 6; i++)
            {
                var ret = counter.WrappedDelegate("arg1", "arg2");

                Assert.AreEqual(i, counter.InvocationCount);
                Assert.AreEqual(i, callCount);
                Assert.AreEqual(12 + i, ret);
            }
        }
示例#27
0
        public void TrackInvocationCountImplementedCorrectlyForFunc16( )
        {
            var callCount = 0;
            DelegateInvocationCounter <Func <String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, Int32> > counter = DelegateHelpers.TrackInvocationCount <String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, Int32> ((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16) =>
            {
                callCount++;
                Assert.AreEqual("arg1", arg1);
                Assert.AreEqual("arg2", arg2);
                Assert.AreEqual("arg3", arg3);
                Assert.AreEqual("arg4", arg4);
                Assert.AreEqual("arg5", arg5);
                Assert.AreEqual("arg6", arg6);
                Assert.AreEqual("arg7", arg7);
                Assert.AreEqual("arg8", arg8);
                Assert.AreEqual("arg9", arg9);
                Assert.AreEqual("arg10", arg10);
                Assert.AreEqual("arg11", arg11);
                Assert.AreEqual("arg12", arg12);
                Assert.AreEqual("arg13", arg13);
                Assert.AreEqual("arg14", arg14);
                Assert.AreEqual("arg15", arg15);
                Assert.AreEqual("arg16", arg16);
                return(12 + callCount);
            });

            for (var i = 1; i < 6; i++)
            {
                var ret = counter.WrappedDelegate("arg1", "arg2", "arg3", "arg4", "arg5", "arg6", "arg7", "arg8", "arg9", "arg10", "arg11", "arg12", "arg13", "arg14", "arg15", "arg16");

                Assert.AreEqual(i, counter.InvocationCount);
                Assert.AreEqual(i, callCount);
                Assert.AreEqual(12 + i, ret);
            }
        }
示例#28
0
        public void TrackInvocationCountImplementedCorrectlyForAction15( )
        {
            var callCount = 0;
            DelegateInvocationCounter <Action <String, String, String, String, String, String, String, String, String, String, String, String, String, String, String> > counter = DelegateHelpers.TrackInvocationCount <String, String, String, String, String, String, String, String, String, String, String, String, String, String, String> ((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15) =>
            {
                callCount++;
                Assert.AreEqual("arg1", arg1);
                Assert.AreEqual("arg2", arg2);
                Assert.AreEqual("arg3", arg3);
                Assert.AreEqual("arg4", arg4);
                Assert.AreEqual("arg5", arg5);
                Assert.AreEqual("arg6", arg6);
                Assert.AreEqual("arg7", arg7);
                Assert.AreEqual("arg8", arg8);
                Assert.AreEqual("arg9", arg9);
                Assert.AreEqual("arg10", arg10);
                Assert.AreEqual("arg11", arg11);
                Assert.AreEqual("arg12", arg12);
                Assert.AreEqual("arg13", arg13);
                Assert.AreEqual("arg14", arg14);
                Assert.AreEqual("arg15", arg15);
            });

            for (var i = 1; i < 6; i++)
            {
                counter.WrappedDelegate("arg1", "arg2", "arg3", "arg4", "arg5", "arg6", "arg7", "arg8", "arg9", "arg10", "arg11", "arg12", "arg13", "arg14", "arg15");

                Assert.AreEqual(i, counter.InvocationCount);
                Assert.AreEqual(i, callCount);
            }

            counter.Reset( );
            Assert.AreEqual(0, counter.InvocationCount);
        }