public void Match() { var sut = new SplitMatcher(); var input = new[] { 300M, 300M }; var m1 = new MonthlyExpense(200); var m2 = new MonthlyExpense(200); var consumers = new[] { m1, m2 }; MatchResult <decimal, decimal> res = sut.Match2(input, consumers, (x, y) => x + y); // both consumers are complete Assert.AreEqual(2, res.Consumers[ConsumerStatus.Complete].Count); Assert.AreEqual(0, res.Consumers[ConsumerStatus.Active].Count); // The first input of $300 paid both monthly expense 1 and 2 var firstMatchConsumers = res.Matches[0].Consumers; CollectionAssert.AreEqual(consumers, firstMatchConsumers.Select(x => x.Consumer).ToArray()); // The first consumer is "m1" and has consumed $200 Assert.AreEqual(m1, firstMatchConsumers.First().Consumer); Assert.AreEqual(200, firstMatchConsumers.First().Consumption); // The second input only paid monthly expense 2 Assert.AreEqual(m2, res.Matches[1].Consumers.Single().Consumer); }
public void Match() { var sut = new SplitMatcher(); var m1 = new MonthlyExpense(200); var m2 = new MonthlyExpense(200); var res = sut.Match(new[] { 300M, 300M }, new[] { m1, m2 }, (x, y) => x + y); }