Example #1
0
        async Task <Option <int> > AddAsync(int x)
        {
            await Task.Delay(100).ConfigureAwait(false);

            Debug.Assert(SynchronizationContext.Current == null);
            return(OptionModule.Some(x + 1));
        }
Example #2
0
        public void Test5_1_Collections()
        {
            var m1 = new MegaType(
                new[] { 0, 1 },
                new FSharpMap <string, int>(new List <Tuple <string, int> > {
                new Tuple <string, int>("key", 10)
            }),
                new FSharpSet <int>(new[] { 1 }),
                new FSharpList <FSharpOption <int> >(new FSharpOption <int>(22), FSharpList <FSharpOption <int> > .Empty),
                new[] { new[] { 0, 1 } },
                new int[, ] {
            }
                );

            Assert.True(MapModule.ContainsKey("key", m1.Maps));

            var newSet = SetModule.Add(2, m1.Sets); //does not mutate set

            Assert.NotEqual(newSet, m1.Sets);

            if (OptionModule.IsSome(ListModule.Head(m1.Lists)))
            {
                Assert.Equal(22, ListModule.Head(m1.Lists).Value);
            }

            //Lists are linked lists, immutable and have structural equality

            Assert.Equal(m1.Arrays, m1.ArrayofArrays[0]); //Structural equality

            m1.Arrays[0] = 1;
            Assert.Equal(m1.Arrays, new[] { 1, 1 }); //Arrays are mutable
        }
Example #3
0
        public void OptionCountWhenSome()
        {
            Option <int> optionValue = 35;
            int          result      = OptionModule.Count(optionValue);

            Assert.AreEqual(1, result);
        }
Example #4
0
        public void OptionFilterWhenFalse()
        {
            Option <int> optionValue = 35;
            Option <int> result      = OptionModule.Filter(_isEven, optionValue);

            Assert.IsTrue(result.IsNone);
        }
        public static V Max <K, V>(this Series <K, V> series)
        {
            Series <K, V> series1 = series;
            FSharpFunc <V, FSharpFunc <V, V> > fsharpFunc = (FSharpFunc <V, FSharpFunc <V, V> >) new SeriesStatsExtensions.Max <V>();
            Series <K, V> series2 = series1;
            V             v       = default(V);
            bool          flag    = false;
            IEnumerator <OptionalValue <V> > enumerator = FVectorextensionscore.IVector ` 1get_DataSequence < V > (series2.Vector).GetEnumerator();

            try
            {
                while (enumerator.MoveNext())
                {
                    OptionalValue <V> current = enumerator.Current;
                    if (current.HasValue)
                    {
                        v = !flag ? current.Value : (V)FSharpFunc <V, V> .InvokeFast <V>((FSharpFunc <V, FSharpFunc <V, M0> >) fsharpFunc, v, current.Value);

                        flag = true;
                    }
                }
            }
            finally
            {
                (enumerator as IDisposable)?.Dispose();
            }
            return((V)OptionModule.GetValue <V>(!flag ? (FSharpOption <M0>)null : (FSharpOption <M0>)FSharpOption <V> .Some(v)));
        }
Example #6
0
        public void OptionAsEnumerableWhenSome()
        {
            Option <int>      optionValue = 35;
            IEnumerable <int> result      = OptionModule.AsEnumerable(optionValue);

            Assert.AreEqual(1, result.Count());
        }
Example #7
0
        public void OptionToListWhenSome()
        {
            Option <int> optionValue = 35;
            List <int>   result      = OptionModule.ToList(optionValue);

            Assert.AreEqual(1, result.Count);
        }
Example #8
0
 public static FSharpOption <T2> Map <T1, T2>(this FSharpOption <T1> opt, Func <T1, T2> f)
 {
     return(OptionModule.Map(
                FSharpFunc <T1, T2> .FromConverter(a => f(a)),
                opt
                ));
 }
Example #9
0
        public void OptionCountWhenNone()
        {
            Option <int> optionValue = Option <int> .None();

            int result = OptionModule.Count(optionValue);

            Assert.AreEqual(0, result);
        }
Example #10
0
        public void OptionToListWhenNone()
        {
            Option <int> optionValue = Option <int> .None();

            List <int> result = OptionModule.ToList(optionValue);

            Assert.AreEqual(0, result.Count);
        }
Example #11
0
        public void OptionOfNullableWhenNull()
        {
            int?         value       = null;
            Option <int> optionValue =
                OptionModule.OfNullable(value);

            Assert.IsTrue(optionValue.IsNone);
        }
Example #12
0
        public void OptionMapWhenNone()
        {
            Option <int> optionValue = Option <int> .None();

            Option <bool> optionResult = OptionModule.Map(_isEven, optionValue);

            Assert.IsTrue(optionResult.IsNone);
        }
Example #13
0
        public void OptionToArrayWhenSome()
        {
            Option <int> optionValue = 35;

            int[] result = OptionModule.ToArray(optionValue);

            Assert.AreEqual(1, result.Length);
        }
Example #14
0
 MapOptionAsync <X, Y>(this Task <Option <X> > @this, Func <X, Y> func)
 {
     foreach (var x in await @this.ConfigureAwait(false))
     {
         return(OptionModule.Some(func(x)));
     }
     return(Option <Y> .None);
 }
Example #15
0
        public void OptionExistsWhenTrue()
        {
            bool         expected    = true;
            Option <int> optionValue = 36;
            bool         result      = OptionModule.Exists(_isEven, optionValue);

            Assert.AreEqual(expected, result);
        }
Example #16
0
        public void OptionToArrayWhenNone()
        {
            Option <int> optionValue = Option <int> .None();

            int[] result = OptionModule.ToArray(optionValue);

            Assert.AreEqual(0, result.Length);
        }
Example #17
0
        public void OptionAsEnumerableWhenNone()
        {
            Option <int> optionValue = Option <int> .None();

            IEnumerable <int> result = OptionModule.AsEnumerable(optionValue);

            Assert.AreEqual(0, result.Count());
        }
Example #18
0
        public void OptionToNullableWhenNone()
        {
            Option <int> optionValue = Option <int> .None();

            int?result = OptionModule.ToNullable(optionValue);

            Assert.IsFalse(result.HasValue);
        }
Example #19
0
        public void OptionBindWhenNone()
        {
            Option <int> optionValue = Option <int> .None();

            Option <int> optionResult = OptionModule.Bind(_squareWhenEven, optionValue);

            Assert.IsTrue(optionResult.IsNone);
        }
Example #20
0
        public void OptionToNullableWhenSome()
        {
            int          expected    = 35;
            Option <int> optionValue = expected;
            int?         result      = OptionModule.ToNullable(optionValue);

            Assert.IsTrue(result.HasValue);
            Assert.AreEqual(expected, result.Value);
        }
Example #21
0
        public void OptionBindWhenSomeTrue()
        {
            int          expected     = 36;
            Option <int> optionValue  = 6;
            Option <int> optionResult = OptionModule.Bind(_squareWhenEven, optionValue);
            int          result       = optionResult.Match(value => value, () => 0);

            Assert.AreEqual(expected, result);
        }
Example #22
0
        public void OptionMapWhenSomeTrue()
        {
            Option <int>  optionValue  = 36;
            Option <bool> optionResult = OptionModule.Map(_isEven, optionValue);
            bool          result       = optionResult.Match(value => value, () => false);


            Assert.IsTrue(optionResult.IsSome && result);
        }
Example #23
0
        public void OptionIterateWhenSome()
        {
            Option <int> optionValue = 35;
            int          result      = 0;

            OptionModule.Iterate(value => result += value, optionValue);

            Assert.AreEqual(35, result);
        }
Example #24
0
 DoOptionAsync <X>(this Task <Option <X> > @this, Action <X> action)
 {
     foreach (var x in await @this.ConfigureAwait(false))
     {
         action(x);
         return(OptionModule.Some(x));
     }
     return(Option <X> .None);
 }
Example #25
0
        public void OptionExistsWhenNone()
        {
            bool         expected    = false;
            Option <int> optionValue = Option <int> .None();

            bool result = OptionModule.Exists(_isEven, optionValue);

            Assert.AreEqual(expected, result);
        }
Example #26
0
        MapOptionAsync <X, Y>(this Task <Option <X> > @this, Func <X, SynchronizationContext, Y> func)
        {
            var context = SynchronizationContext.Current;

            foreach (var x in await @this.ConfigureAwait(false))
            {
                return(OptionModule.Some(func(x, context)));
            }
            return(Option <Y> .None);
        }
Example #27
0
        public void OptionIterateWhenNone()
        {
            Option <int> optionValue = Option <int> .None();

            int result = 0;

            OptionModule.Iterate(value => result += value, optionValue);

            Assert.AreEqual(0, result);
        }
Example #28
0
        public void OptionFilterWhenTrue()
        {
            int          expected     = 36;
            Option <int> optionValue  = expected;
            Option <int> optionResult = OptionModule.Filter(_isEven, optionValue);
            int          result       = optionResult.Match(value => value, () => 0);


            Assert.AreEqual(expected, result);
        }
Example #29
0
        public void OptionMapWhenSomeFalse()
        {
            string          expected     = "Odd";
            Option <int>    optionValue  = 35;
            Option <string> optionResult = OptionModule.Map((value) => _isEven(value) ? "Even" : "Odd", optionValue);
            string          result       = optionResult.Match(value => value, () => string.Empty);


            Assert.AreEqual(expected, result);
        }
Example #30
0
        public static FsCodec.IEventCodec <TEvent, byte[], object> Create <TEvent>(
            Func <TEvent, Tuple <string, byte[]> > encode,
            Func <string, byte[], TEvent> tryDecode) where TEvent : class
        {
            return(FsCodec.Codec.Create(
                       FuncConvert.FromFunc(encode),
                       FuncConvert.FromFunc((Func <Tuple <string, byte[]>, FSharpOption <TEvent> >)TryDecodeImpl)));

            FSharpOption <TEvent> TryDecodeImpl(Tuple <string, byte[]> encoded) => OptionModule.OfObj(tryDecode(encoded.Item1, encoded.Item2));
        }