Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }