コード例 #1
0
ファイル: ComputeTest.cs プロジェクト: aurlaw/CashRegister
 public void TestMinComputeLessThanZero()
 {
     var       service = new ChangeGenerator();
     Exception ex      = Assert.Throws <ArgumentOutOfRangeException>(() => service.ComputeChange(-1, (list) =>
     {
         var reducer = new MinReducer();
         return(reducer.Reduce(list));
     }));
 }
コード例 #2
0
ファイル: ComputeTest.cs プロジェクト: aurlaw/CashRegister
        public void TestMinComputePassOne()
        {
            var service = new ChangeGenerator();
            var result  = service.ComputeChange(103, (list) =>
            {
                var reducer = new MinReducer();
                return(reducer.Reduce(list));
            });

            Assert.Equal(result.TotalCoins, 4);
        }
コード例 #3
0
ファイル: Register.cs プロジェクト: aurlaw/CashRegister
        public int Process()
        {
            var denList   = new List <Denomination>();
            var inputData = _input.LoadData();

            foreach (var transaction in inputData)
            {
                IReducer         reducer   = GetReducer((int)transaction.AmountOwed);
                IChangeGenerator generator = new ChangeGenerator();//
                var result = generator.ComputeChange(transaction.AmountChangeCents, (list) =>
                {
                    return(reducer.Reduce(list));
                });
                denList.Add(result);
            }
            if (denList.Any())
            {
                _output.SaveData(denList);
            }

            return(denList.Count);
        }