Esempio n. 1
0
    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));
    }