public void ToOptionFunc() { var f1_0 = new Func<string>(() => ""); var g1_0 = f1_0.ToOptionFunc(); Assert.That(g1_0(), Is.EqualTo(Option.Some(""))); f1_0 = new Func<string>(() => { throw new Exception("oops!"); }); g1_0 = f1_0.ToOptionFunc(); Assert.That(g1_0(), Is.EqualTo(Option<string>.None)); f1_0 = new Func<string>(() => null); g1_0 = f1_0.ToOptionFunc(); Assert.That(g1_0(), Is.EqualTo(Option<string>.None)); var f2_0 = new Func<int?>(() => + 0); var g2_0 = f2_0.ToOptionFunc(); Assert.That(g2_0(), Is.EqualTo(Option.Some( + 0))); f2_0 = new Func<int?>(() => { throw new Exception("oops!"); }); g2_0 = f2_0.ToOptionFunc(); Assert.That(g2_0(), Is.EqualTo(Option<int>.None)); f2_0 = new Func<int?>(() => null); g2_0 = f2_0.ToOptionFunc(); Assert.That(g2_0(), Is.EqualTo(Option<int>.None)); var f1_1 = new Func<string, string>((a1) => a1); var g1_1 = f1_1.ToOptionFunc(); Assert.That(g1_1("1"), Is.EqualTo(Option.Some("1"))); f1_1 = new Func<string, string>((a1) => { throw new Exception("oops!"); }); g1_1 = f1_1.ToOptionFunc(); Assert.That(g1_1("1"), Is.EqualTo(Option<string>.None)); f1_1 = new Func<string, string>((a1) => null); g1_1 = f1_1.ToOptionFunc(); Assert.That(g1_1("1"), Is.EqualTo(Option<string>.None)); var f2_1 = new Func<int?, int?>((a1) => a1 + 0); var g2_1 = f2_1.ToOptionFunc(); Assert.That(g2_1(1), Is.EqualTo(Option.Some(1 + 0))); f2_1 = new Func<int?, int?>((a1) => { throw new Exception("oops!"); }); g2_1 = f2_1.ToOptionFunc(); Assert.That(g2_1(1), Is.EqualTo(Option<int>.None)); f2_1 = new Func<int?, int?>((a1) => null); g2_1 = f2_1.ToOptionFunc(); Assert.That(g2_1(1), Is.EqualTo(Option<int>.None)); var f1_2 = new Func<string, string, string>((a1, a2) => a1 + a2); var g1_2 = f1_2.ToOptionFunc(); Assert.That(g1_2("1", "2"), Is.EqualTo(Option.Some("12"))); f1_2 = new Func<string, string, string>((a1, a2) => { throw new Exception("oops!"); }); g1_2 = f1_2.ToOptionFunc(); Assert.That(g1_2("1", "2"), Is.EqualTo(Option<string>.None)); f1_2 = new Func<string, string, string>((a1, a2) => null); g1_2 = f1_2.ToOptionFunc(); Assert.That(g1_2("1", "2"), Is.EqualTo(Option<string>.None)); var f2_2 = new Func<int?, int?, int?>((a1, a2) => a1 + a2 + 0); var g2_2 = f2_2.ToOptionFunc(); Assert.That(g2_2(1, 2), Is.EqualTo(Option.Some(1 + 2 + 0))); f2_2 = new Func<int?, int?, int?>((a1, a2) => { throw new Exception("oops!"); }); g2_2 = f2_2.ToOptionFunc(); Assert.That(g2_2(1, 2), Is.EqualTo(Option<int>.None)); f2_2 = new Func<int?, int?, int?>((a1, a2) => null); g2_2 = f2_2.ToOptionFunc(); Assert.That(g2_2(1, 2), Is.EqualTo(Option<int>.None)); var f1_3 = new Func<string, string, string, string>((a1, a2, a3) => a1 + a2 + a3); var g1_3 = f1_3.ToOptionFunc(); Assert.That(g1_3("1", "2", "3"), Is.EqualTo(Option.Some("123"))); f1_3 = new Func<string, string, string, string>((a1, a2, a3) => { throw new Exception("oops!"); }); g1_3 = f1_3.ToOptionFunc(); Assert.That(g1_3("1", "2", "3"), Is.EqualTo(Option<string>.None)); f1_3 = new Func<string, string, string, string>((a1, a2, a3) => null); g1_3 = f1_3.ToOptionFunc(); Assert.That(g1_3("1", "2", "3"), Is.EqualTo(Option<string>.None)); var f2_3 = new Func<int?, int?, int?, int?>((a1, a2, a3) => a1 + a2 + a3 + 0); var g2_3 = f2_3.ToOptionFunc(); Assert.That(g2_3(1, 2, 3), Is.EqualTo(Option.Some(1 + 2 + 3 + 0))); f2_3 = new Func<int?, int?, int?, int?>((a1, a2, a3) => { throw new Exception("oops!"); }); g2_3 = f2_3.ToOptionFunc(); Assert.That(g2_3(1, 2, 3), Is.EqualTo(Option<int>.None)); f2_3 = new Func<int?, int?, int?, int?>((a1, a2, a3) => null); g2_3 = f2_3.ToOptionFunc(); Assert.That(g2_3(1, 2, 3), Is.EqualTo(Option<int>.None)); var f1_4 = new Func<string, string, string, string, string>((a1, a2, a3, a4) => a1 + a2 + a3 + a4); var g1_4 = f1_4.ToOptionFunc(); Assert.That(g1_4("1", "2", "3", "4"), Is.EqualTo(Option.Some("1234"))); f1_4 = new Func<string, string, string, string, string>((a1, a2, a3, a4) => { throw new Exception("oops!"); }); g1_4 = f1_4.ToOptionFunc(); Assert.That(g1_4("1", "2", "3", "4"), Is.EqualTo(Option<string>.None)); f1_4 = new Func<string, string, string, string, string>((a1, a2, a3, a4) => null); g1_4 = f1_4.ToOptionFunc(); Assert.That(g1_4("1", "2", "3", "4"), Is.EqualTo(Option<string>.None)); var f2_4 = new Func<int?, int?, int?, int?, int?>((a1, a2, a3, a4) => a1 + a2 + a3 + a4 + 0); var g2_4 = f2_4.ToOptionFunc(); Assert.That(g2_4(1, 2, 3, 4), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 0))); f2_4 = new Func<int?, int?, int?, int?, int?>((a1, a2, a3, a4) => { throw new Exception("oops!"); }); g2_4 = f2_4.ToOptionFunc(); Assert.That(g2_4(1, 2, 3, 4), Is.EqualTo(Option<int>.None)); f2_4 = new Func<int?, int?, int?, int?, int?>((a1, a2, a3, a4) => null); g2_4 = f2_4.ToOptionFunc(); Assert.That(g2_4(1, 2, 3, 4), Is.EqualTo(Option<int>.None)); var f1_5 = new Func<string, string, string, string, string, string>((a1, a2, a3, a4, a5) => a1 + a2 + a3 + a4 + a5); var g1_5 = f1_5.ToOptionFunc(); Assert.That(g1_5("1", "2", "3", "4", "5"), Is.EqualTo(Option.Some("12345"))); f1_5 = new Func<string, string, string, string, string, string>((a1, a2, a3, a4, a5) => { throw new Exception("oops!"); }); g1_5 = f1_5.ToOptionFunc(); Assert.That(g1_5("1", "2", "3", "4", "5"), Is.EqualTo(Option<string>.None)); f1_5 = new Func<string, string, string, string, string, string>((a1, a2, a3, a4, a5) => null); g1_5 = f1_5.ToOptionFunc(); Assert.That(g1_5("1", "2", "3", "4", "5"), Is.EqualTo(Option<string>.None)); var f2_5 = new Func<int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5) => a1 + a2 + a3 + a4 + a5 + 0); var g2_5 = f2_5.ToOptionFunc(); Assert.That(g2_5(1, 2, 3, 4, 5), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 0))); f2_5 = new Func<int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5) => { throw new Exception("oops!"); }); g2_5 = f2_5.ToOptionFunc(); Assert.That(g2_5(1, 2, 3, 4, 5), Is.EqualTo(Option<int>.None)); f2_5 = new Func<int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5) => null); g2_5 = f2_5.ToOptionFunc(); Assert.That(g2_5(1, 2, 3, 4, 5), Is.EqualTo(Option<int>.None)); var f1_6 = new Func<string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6) => a1 + a2 + a3 + a4 + a5 + a6); var g1_6 = f1_6.ToOptionFunc(); Assert.That(g1_6("1", "2", "3", "4", "5", "6"), Is.EqualTo(Option.Some("123456"))); f1_6 = new Func<string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6) => { throw new Exception("oops!"); }); g1_6 = f1_6.ToOptionFunc(); Assert.That(g1_6("1", "2", "3", "4", "5", "6"), Is.EqualTo(Option<string>.None)); f1_6 = new Func<string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6) => null); g1_6 = f1_6.ToOptionFunc(); Assert.That(g1_6("1", "2", "3", "4", "5", "6"), Is.EqualTo(Option<string>.None)); var f2_6 = new Func<int?, int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5, a6) => a1 + a2 + a3 + a4 + a5 + a6 + 0); var g2_6 = f2_6.ToOptionFunc(); Assert.That(g2_6(1, 2, 3, 4, 5, 6), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 0))); f2_6 = new Func<int?, int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5, a6) => { throw new Exception("oops!"); }); g2_6 = f2_6.ToOptionFunc(); Assert.That(g2_6(1, 2, 3, 4, 5, 6), Is.EqualTo(Option<int>.None)); f2_6 = new Func<int?, int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5, a6) => null); g2_6 = f2_6.ToOptionFunc(); Assert.That(g2_6(1, 2, 3, 4, 5, 6), Is.EqualTo(Option<int>.None)); var f1_7 = new Func<string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7) => a1 + a2 + a3 + a4 + a5 + a6 + a7); var g1_7 = f1_7.ToOptionFunc(); Assert.That(g1_7("1", "2", "3", "4", "5", "6", "7"), Is.EqualTo(Option.Some("1234567"))); f1_7 = new Func<string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7) => { throw new Exception("oops!"); }); g1_7 = f1_7.ToOptionFunc(); Assert.That(g1_7("1", "2", "3", "4", "5", "6", "7"), Is.EqualTo(Option<string>.None)); f1_7 = new Func<string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7) => null); g1_7 = f1_7.ToOptionFunc(); Assert.That(g1_7("1", "2", "3", "4", "5", "6", "7"), Is.EqualTo(Option<string>.None)); var f2_7 = 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 g2_7 = f2_7.ToOptionFunc(); Assert.That(g2_7(1, 2, 3, 4, 5, 6, 7), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 0))); f2_7 = new Func<int?, int?, int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5, a6, a7) => { throw new Exception("oops!"); }); g2_7 = f2_7.ToOptionFunc(); Assert.That(g2_7(1, 2, 3, 4, 5, 6, 7), Is.EqualTo(Option<int>.None)); f2_7 = new Func<int?, int?, int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5, a6, a7) => null); g2_7 = f2_7.ToOptionFunc(); Assert.That(g2_7(1, 2, 3, 4, 5, 6, 7), Is.EqualTo(Option<int>.None)); var f1_8 = new Func<string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8); var g1_8 = f1_8.ToOptionFunc(); Assert.That(g1_8("1", "2", "3", "4", "5", "6", "7", "8"), Is.EqualTo(Option.Some("12345678"))); f1_8 = new Func<string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8) => { throw new Exception("oops!"); }); g1_8 = f1_8.ToOptionFunc(); Assert.That(g1_8("1", "2", "3", "4", "5", "6", "7", "8"), Is.EqualTo(Option<string>.None)); f1_8 = new Func<string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8) => null); g1_8 = f1_8.ToOptionFunc(); Assert.That(g1_8("1", "2", "3", "4", "5", "6", "7", "8"), Is.EqualTo(Option<string>.None)); var f2_8 = 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 g2_8 = f2_8.ToOptionFunc(); Assert.That(g2_8(1, 2, 3, 4, 5, 6, 7, 8), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 0))); f2_8 = new Func<int?, int?, int?, int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5, a6, a7, a8) => { throw new Exception("oops!"); }); g2_8 = f2_8.ToOptionFunc(); Assert.That(g2_8(1, 2, 3, 4, 5, 6, 7, 8), Is.EqualTo(Option<int>.None)); f2_8 = new Func<int?, int?, int?, int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5, a6, a7, a8) => null); g2_8 = f2_8.ToOptionFunc(); Assert.That(g2_8(1, 2, 3, 4, 5, 6, 7, 8), Is.EqualTo(Option<int>.None)); var f1_9 = new Func<string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9); var g1_9 = f1_9.ToOptionFunc(); Assert.That(g1_9("1", "2", "3", "4", "5", "6", "7", "8", "9"), Is.EqualTo(Option.Some("123456789"))); f1_9 = new Func<string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9) => { throw new Exception("oops!"); }); g1_9 = f1_9.ToOptionFunc(); Assert.That(g1_9("1", "2", "3", "4", "5", "6", "7", "8", "9"), Is.EqualTo(Option<string>.None)); f1_9 = new Func<string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9) => null); g1_9 = f1_9.ToOptionFunc(); Assert.That(g1_9("1", "2", "3", "4", "5", "6", "7", "8", "9"), Is.EqualTo(Option<string>.None)); var f2_9 = 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 g2_9 = f2_9.ToOptionFunc(); Assert.That(g2_9(1, 2, 3, 4, 5, 6, 7, 8, 9), Is.EqualTo(Option.Some(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0))); f2_9 = 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!"); }); g2_9 = f2_9.ToOptionFunc(); Assert.That(g2_9(1, 2, 3, 4, 5, 6, 7, 8, 9), Is.EqualTo(Option<int>.None)); f2_9 = new Func<int?, int?, int?, int?, int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5, a6, a7, a8, a9) => null); g2_9 = f2_9.ToOptionFunc(); Assert.That(g2_9(1, 2, 3, 4, 5, 6, 7, 8, 9), Is.EqualTo(Option<int>.None)); var f1_10 = new Func<string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10); var g1_10 = f1_10.ToOptionFunc(); Assert.That(g1_10("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"), Is.EqualTo(Option.Some("12345678910"))); f1_10 = new Func<string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) => { throw new Exception("oops!"); }); g1_10 = f1_10.ToOptionFunc(); Assert.That(g1_10("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"), Is.EqualTo(Option<string>.None)); f1_10 = new Func<string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) => null); g1_10 = f1_10.ToOptionFunc(); Assert.That(g1_10("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"), Is.EqualTo(Option<string>.None)); var f2_10 = 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 g2_10 = f2_10.ToOptionFunc(); Assert.That(g2_10(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))); f2_10 = 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!"); }); g2_10 = f2_10.ToOptionFunc(); Assert.That(g2_10(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), Is.EqualTo(Option<int>.None)); f2_10 = new Func<int?, int?, int?, int?, int?, int?, int?, int?, int?, int?, int?>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) => null); g2_10 = f2_10.ToOptionFunc(); Assert.That(g2_10(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), Is.EqualTo(Option<int>.None)); var f1_11 = new Func<string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11); var g1_11 = f1_11.ToOptionFunc(); Assert.That(g1_11("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"), Is.EqualTo(Option.Some("1234567891011"))); f1_11 = new Func<string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) => { throw new Exception("oops!"); }); g1_11 = f1_11.ToOptionFunc(); Assert.That(g1_11("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"), Is.EqualTo(Option<string>.None)); f1_11 = new Func<string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) => null); g1_11 = f1_11.ToOptionFunc(); Assert.That(g1_11("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"), Is.EqualTo(Option<string>.None)); var f2_11 = 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 g2_11 = f2_11.ToOptionFunc(); Assert.That(g2_11(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))); f2_11 = 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!"); }); g2_11 = f2_11.ToOptionFunc(); Assert.That(g2_11(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), Is.EqualTo(Option<int>.None)); f2_11 = 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) => null); g2_11 = f2_11.ToOptionFunc(); Assert.That(g2_11(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), Is.EqualTo(Option<int>.None)); var f1_12 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) => a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12); var g1_12 = f1_12.ToOptionFunc(); Assert.That(g1_12("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"), Is.EqualTo(Option.Some("123456789101112"))); f1_12 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) => { throw new Exception("oops!"); }); g1_12 = f1_12.ToOptionFunc(); Assert.That(g1_12("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"), Is.EqualTo(Option<string>.None)); f1_12 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) => null); g1_12 = f1_12.ToOptionFunc(); Assert.That(g1_12("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"), Is.EqualTo(Option<string>.None)); var f2_12 = 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 g2_12 = f2_12.ToOptionFunc(); Assert.That(g2_12(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))); f2_12 = 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!"); }); g2_12 = f2_12.ToOptionFunc(); Assert.That(g2_12(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), Is.EqualTo(Option<int>.None)); f2_12 = 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) => null); g2_12 = f2_12.ToOptionFunc(); Assert.That(g2_12(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), Is.EqualTo(Option<int>.None)); var f1_13 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string>((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); var g1_13 = f1_13.ToOptionFunc(); Assert.That(g1_13("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"), Is.EqualTo(Option.Some("12345678910111213"))); f1_13 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) => { throw new Exception("oops!"); }); g1_13 = f1_13.ToOptionFunc(); Assert.That(g1_13("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"), Is.EqualTo(Option<string>.None)); f1_13 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) => null); g1_13 = f1_13.ToOptionFunc(); Assert.That(g1_13("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"), Is.EqualTo(Option<string>.None)); var f2_13 = 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 g2_13 = f2_13.ToOptionFunc(); Assert.That(g2_13(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))); f2_13 = 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!"); }); g2_13 = f2_13.ToOptionFunc(); Assert.That(g2_13(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13), Is.EqualTo(Option<int>.None)); f2_13 = 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) => null); g2_13 = f2_13.ToOptionFunc(); Assert.That(g2_13(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13), Is.EqualTo(Option<int>.None)); var f1_14 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string>((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); var g1_14 = f1_14.ToOptionFunc(); Assert.That(g1_14("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14"), Is.EqualTo(Option.Some("1234567891011121314"))); f1_14 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) => { throw new Exception("oops!"); }); g1_14 = f1_14.ToOptionFunc(); Assert.That(g1_14("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14"), Is.EqualTo(Option<string>.None)); f1_14 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) => null); g1_14 = f1_14.ToOptionFunc(); Assert.That(g1_14("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14"), Is.EqualTo(Option<string>.None)); var f2_14 = 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 g2_14 = f2_14.ToOptionFunc(); Assert.That(g2_14(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))); f2_14 = 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!"); }); g2_14 = f2_14.ToOptionFunc(); Assert.That(g2_14(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), Is.EqualTo(Option<int>.None)); f2_14 = 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) => null); g2_14 = f2_14.ToOptionFunc(); Assert.That(g2_14(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), Is.EqualTo(Option<int>.None)); var f1_15 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string>((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); var g1_15 = f1_15.ToOptionFunc(); Assert.That(g1_15("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"), Is.EqualTo(Option.Some("123456789101112131415"))); f1_15 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) => { throw new Exception("oops!"); }); g1_15 = f1_15.ToOptionFunc(); Assert.That(g1_15("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"), Is.EqualTo(Option<string>.None)); f1_15 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) => null); g1_15 = f1_15.ToOptionFunc(); Assert.That(g1_15("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"), Is.EqualTo(Option<string>.None)); var f2_15 = 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 g2_15 = f2_15.ToOptionFunc(); Assert.That(g2_15(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))); f2_15 = 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!"); }); g2_15 = f2_15.ToOptionFunc(); Assert.That(g2_15(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), Is.EqualTo(Option<int>.None)); f2_15 = 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) => null); g2_15 = f2_15.ToOptionFunc(); Assert.That(g2_15(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), Is.EqualTo(Option<int>.None)); var f1_16 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string>((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); var g1_16 = f1_16.ToOptionFunc(); Assert.That(g1_16("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"), Is.EqualTo(Option.Some("12345678910111213141516"))); f1_16 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => { throw new Exception("oops!"); }); g1_16 = f1_16.ToOptionFunc(); Assert.That(g1_16("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"), Is.EqualTo(Option<string>.None)); f1_16 = new Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string>((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => null); g1_16 = f1_16.ToOptionFunc(); Assert.That(g1_16("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"), Is.EqualTo(Option<string>.None)); var f2_16 = 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 g2_16 = f2_16.ToOptionFunc(); Assert.That(g2_16(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))); f2_16 = 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!"); }); g2_16 = f2_16.ToOptionFunc(); Assert.That(g2_16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), Is.EqualTo(Option<int>.None)); f2_16 = 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) => null); g2_16 = f2_16.ToOptionFunc(); Assert.That(g2_16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), Is.EqualTo(Option<int>.None)); }