public void TestInitialise() { var f = new FoldFunction<int>(Math.Max); Assert.Throws<InvalidOperationException>(() => { var key = f[new int[0]]; }); for (var i = 0; i < 100; i++) { var x = MonteCarlo.Unordered(20, MonteCarlo.Number(1, 20)).ToList(); Assert.That(f[x], Is.EqualTo(x.Aggregate(Math.Max))); } }
public void FoldTestShoulWorkWhenWeDoNotAddValues() { var listOfFold = new List <int>() { }; int result = 0; result = FoldFunction.Fold(listOfFold, 1, (x, y) => x * y); Assert.AreEqual(1, result); }
public void FoldTestShoulWorkWithAddZeroValue() { var listOfFold = new List <int>() { 8, 6, 3, 0 }; int result = 0; result = FoldFunction.Fold(listOfFold, 1, (x, y) => x * y); Assert.AreEqual(0, result); }
public void FoldTestShoulWork() { var listOfFold = new List <int>() { 1, 2, 3, 4 }; int result = 0; result = FoldFunction.Fold(listOfFold, 1, (x, y) => x * y); Assert.IsTrue(listOfFold.Contains(3)); Assert.IsFalse(listOfFold.Contains(8)); Assert.AreEqual(24, result); }
public void TestReactValue() { var numbers = new[] {10, 11, 12, 13, 6}; var calls = 0; var f = new FoldFunction<int>((x, y) => { calls++; return Math.Max(x, y); }); Assert.That(f.React(13, numbers.ToList().ToLog(Δ1.Empty)), Is.EqualTo(13.ToLog(false))); Assert.That(calls, Is.EqualTo(0)); Assert.That(f.React(13, numbers.ToList().Mutate(Expressions.Numbers(4).ToIns(), (key, i) => 26)), Is.EqualTo(26.ToLog(true))); Assert.That(calls, Is.EqualTo(5)); calls = 0; Assert.That(f.React(13, numbers.ToList().Mutate(Expressions.Numbers(4).ToIns(), (key, i) => 13)), Is.EqualTo(13.ToLog(false))); Assert.That(calls, Is.EqualTo(5)); calls = 0; Assert.That(f.React(13, numbers.ToList().Mutate(Expressions.Numbers(5).ToIns(), (key, i) => 26)), Is.EqualTo(26.ToLog(true))); Assert.That(calls, Is.EqualTo(1)); calls = 0; Assert.That(f.React(13, numbers.ToList().Mutate(Expressions.Numbers(5).ToIns(), (key, i) => 7)), Is.EqualTo(13.ToLog(false))); Assert.That(calls, Is.EqualTo(1)); calls = 0; Assert.That(f.React(13, numbers.ToList().Mutate(Expressions.Numbers(1).ToDel(), (key, i) => 26)), Is.EqualTo(13.ToLog(false))); Assert.That(calls, Is.EqualTo(3)); calls = 0; Assert.That(f.React(13, numbers.ToList().Mutate(Expressions.Numbers(3).ToDel(), (key, i) => 26)), Is.EqualTo(12.ToLog(true))); Assert.That(calls, Is.EqualTo(3)); }