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); }
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); }
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); }
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); }
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); }
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); }