Пример #1
0
        public void ExnToOptionFunc()
        {
            var f0 = new Func<int>(() =>  + 0);
            var g0 = f0.ExnToOptionFunc();
            Assert.That(g0(), Is.EqualTo(Option.Some( + 0)));
            f0 = new Func<int>(() => { throw new Exception("oops!"); });
            g0 = f0.ExnToOptionFunc();
            Assert.That(g0(), Is.EqualTo(Option<int>.None));

            var f1 = new Func<int, int>((a1) => a1 + 0);
            var g1 = f1.ExnToOptionFunc();
            Assert.That(g1(1), Is.EqualTo(Option.Some(1 + 0)));
            f1 = new Func<int, int>((a1) => { throw new Exception("oops!"); });
            g1 = f1.ExnToOptionFunc();
            Assert.That(g1(1), Is.EqualTo(Option<int>.None));

            var f2 = new Func<int, int, int>((a1, a2) => a1 + a2 + 0);
            var g2 = f2.ExnToOptionFunc();
            Assert.That(g2(1, 2), Is.EqualTo(Option.Some(1 + 2 + 0)));
            f2 = new Func<int, int, int>((a1, a2) => { throw new Exception("oops!"); });
            g2 = f2.ExnToOptionFunc();
            Assert.That(g2(1, 2), Is.EqualTo(Option<int>.None));

            var f3 = new Func<int, int, int, int>((a1, a2, a3) => a1 + a2 + a3 + 0);
            var g3 = f3.ExnToOptionFunc();
            Assert.That(g3(1, 2, 3), Is.EqualTo(Option.Some(1 + 2 + 3 + 0)));
            f3 = new Func<int, int, int, int>((a1, a2, a3) => { throw new Exception("oops!"); });
            g3 = f3.ExnToOptionFunc();
            Assert.That(g3(1, 2, 3), Is.EqualTo(Option<int>.None));

            var f4 = new Func<int, int, int, int, int>((a1, a2, a3, a4) => a1 + a2 + a3 + a4 + 0);
            var g4 = f4.ExnToOptionFunc();
            Assert.That(g4(1, 2, 3, 4), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 0)));
            f4 = new Func<int, int, int, int, int>((a1, a2, a3, a4) => { throw new Exception("oops!"); });
            g4 = f4.ExnToOptionFunc();
            Assert.That(g4(1, 2, 3, 4), Is.EqualTo(Option<int>.None));

            var f5 = new Func<int, int, int, int, int, int>((a1, a2, a3, a4, a5) => a1 + a2 + a3 + a4 + a5 + 0);
            var g5 = f5.ExnToOptionFunc();
            Assert.That(g5(1, 2, 3, 4, 5), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 0)));
            f5 = new Func<int, int, int, int, int, int>((a1, a2, a3, a4, a5) => { throw new Exception("oops!"); });
            g5 = f5.ExnToOptionFunc();
            Assert.That(g5(1, 2, 3, 4, 5), Is.EqualTo(Option<int>.None));

            var f6 = new Func<int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6) => a1 + a2 + a3 + a4 + a5 + a6 + 0);
            var g6 = f6.ExnToOptionFunc();
            Assert.That(g6(1, 2, 3, 4, 5, 6), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 0)));
            f6 = new Func<int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6) => { throw new Exception("oops!"); });
            g6 = f6.ExnToOptionFunc();
            Assert.That(g6(1, 2, 3, 4, 5, 6), Is.EqualTo(Option<int>.None));

            var f7 = new Func<int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + 0);
            var g7 = f7.ExnToOptionFunc();
            Assert.That(g7(1, 2, 3, 4, 5, 6, 7), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 0)));
            f7 = new Func<int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7) => { throw new Exception("oops!"); });
            g7 = f7.ExnToOptionFunc();
            Assert.That(g7(1, 2, 3, 4, 5, 6, 7), Is.EqualTo(Option<int>.None));

            var f8 = new Func<int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + 0);
            var g8 = f8.ExnToOptionFunc();
            Assert.That(g8(1, 2, 3, 4, 5, 6, 7, 8), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 0)));
            f8 = new Func<int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8) => { throw new Exception("oops!"); });
            g8 = f8.ExnToOptionFunc();
            Assert.That(g8(1, 2, 3, 4, 5, 6, 7, 8), Is.EqualTo(Option<int>.None));

            var f9 = new Func<int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + 0);
            var g9 = f9.ExnToOptionFunc();
            Assert.That(g9(1, 2, 3, 4, 5, 6, 7, 8, 9), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0)));
            f9 = new Func<int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9) => { throw new Exception("oops!"); });
            g9 = f9.ExnToOptionFunc();
            Assert.That(g9(1, 2, 3, 4, 5, 6, 7, 8, 9), Is.EqualTo(Option<int>.None));

            var f10 = new Func<int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + 0);
            var g10 = f10.ExnToOptionFunc();
            Assert.That(g10(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 0)));
            f10 = new Func<int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) => { throw new Exception("oops!"); });
            g10 = f10.ExnToOptionFunc();
            Assert.That(g10(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), Is.EqualTo(Option<int>.None));

            var f11 = new Func<int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + 0);
            var g11 = f11.ExnToOptionFunc();
            Assert.That(g11(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 0)));
            f11 = new Func<int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) => { throw new Exception("oops!"); });
            g11 = f11.ExnToOptionFunc();
            Assert.That(g11(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), Is.EqualTo(Option<int>.None));

            var f12 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + 0);
            var g12 = f12.ExnToOptionFunc();
            Assert.That(g12(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 0)));
            f12 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) => { throw new Exception("oops!"); });
            g12 = f12.ExnToOptionFunc();
            Assert.That(g12(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), Is.EqualTo(Option<int>.None));

            var f13 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + 0);
            var g13 = f13.ExnToOptionFunc();
            Assert.That(g13(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 0)));
            f13 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) => { throw new Exception("oops!"); });
            g13 = f13.ExnToOptionFunc();
            Assert.That(g13(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13), Is.EqualTo(Option<int>.None));

            var f14 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14 + 0);
            var g14 = f14.ExnToOptionFunc();
            Assert.That(g14(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 0)));
            f14 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) => { throw new Exception("oops!"); });
            g14 = f14.ExnToOptionFunc();
            Assert.That(g14(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), Is.EqualTo(Option<int>.None));

            var f15 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14 + a15 + 0);
            var g15 = f15.ExnToOptionFunc();
            Assert.That(g15(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 0)));
            f15 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) => { throw new Exception("oops!"); });
            g15 = f15.ExnToOptionFunc();
            Assert.That(g15(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), Is.EqualTo(Option<int>.None));

            var f16 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14 + a15 + a16 + 0);
            var g16 = f16.ExnToOptionFunc();
            Assert.That(g16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 0)));
            f16 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => { throw new Exception("oops!"); });
            g16 = f16.ExnToOptionFunc();
            Assert.That(g16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), Is.EqualTo(Option<int>.None));
        }