Exemple #1
0
        public void Function_Synch_Delay_1Argument()
        {
            var invoked = false;

            var delaying = new Func <string, string>((a) =>
            {
                invoked = true;
                return(Util.Join("", a));
            });

            var delayed = _.Function.Delay(delaying, 100);

            Thread.MemoryBarrier();

            TestDelay(100, "a", apply.Apply(delayed, arguments));

            Assert.IsTrue(invoked);
        }
Exemple #2
0
        public void Function_Cache_Memo_1Argument()
        {
            var expected  = "a";
            var callcount = 0;

            Func <string, string> testFn = a =>
            {
                callcount++;
                return(Util.Join(a));
            };

            var memoized = _.Function.Memoize(testFn);

            var result = apply.Apply(memoized, Util.LowercaseCharArray);

            Assert.AreEqual(expected, result);
            Assert.AreEqual(1, callcount);

            result = apply.Apply(memoized, Util.LowercaseCharArray);

            Assert.AreEqual(expected, result);
            Assert.AreEqual(1, callcount);

            expected = "A";

            result = apply.Apply(memoized, Util.UppercaseCharArray);

            Assert.AreEqual(expected, result);
            Assert.AreEqual(2, callcount);

            result = apply.Apply(memoized, Util.UppercaseCharArray);

            Assert.AreEqual(expected, result);
            Assert.AreEqual(2, callcount);
        }
Exemple #3
0
        public void Function_Synch_Once_1Argument()
        {
            var invoked = false;

            var counter = 0;

            var oncing = new Func <string, string>((a) =>
            {
                counter++;
                invoked = true;
                return(string.Join("", a, counter));
            });

            var onced = _.Function.Once(oncing);

            string[] result = new string[100];
            for (int i = 0; i < 100; i++)
            {
                result[i] = apply.Apply(onced, arguments);
            }

            foreach (var v in result)
            {
                Assert.AreEqual("a1", v);
            }
            Assert.IsTrue(invoked);
        }
Exemple #4
0
        public void Action_Synch_Delay_1Argument()
        {
            var invoked = false;

            var delaying = new Action <string>((a) =>
            {
                Assert.AreEqual("a", a);
                invoked = true;
            });

            var delayed = _.Action.Delay(delaying, 100);

            Thread.MemoryBarrier();

            Assert.IsFalse(invoked);

            TestDelay(100, apply.Apply(delayed, arguments));

            Assert.IsTrue(invoked);
        }
Exemple #5
0
        public void Function_Synch_After_1Argument()
        {
            var invoked = false;
            var arr     = mkArr();

            var counter = 0;

            var aftering = new Func <string, string>((a) =>
            {
                invoked = true;
                return(a);
            });

            var aftered = _.Function.After(aftering, paramValue);

            for (int i = 0; i < repeatCount; i++)
            {
                var curr = counter++;
                arr[i] = apply.Apply(aftered, arguments.Take(1).Concat(new[] { curr.ToString() }).ToArray());
            }

            for (int i = 0; i < repeatCount; i++)
            {
                arr[i].Wait();
            }

            for (int i = 0; i < paramValue; i++)
            {
                Assert.AreEqual("a", arr[i].Result);
            }

            for (int i = paramValue; i < repeatCount; i++)
            {
                Assert.AreEqual("a", arr[i].Result);
            }

            Assert.IsTrue(invoked);
        }
Exemple #6
0
        public void Function_Synch_Before_1Argument()
        {
            var invoked = false;

            var counter = 0;

            var beforing = new Func <string, string>((a) =>
            {
                invoked = true;
                return(string.Join("", a, counter++));
            });

            var befored = _.Function.Before(beforing, 2);

            for (var i = 0; i < 2; i++)
            {
                Assert.AreEqual("a" + i, apply.Apply(befored, arguments));
            }

            for (var i = 2; i < 4; i++)
            {
                Assert.AreEqual("a1", apply.Apply(befored, arguments));
            }

            Assert.IsTrue(invoked);
        }