예제 #1
0
        public void AddsWeeklyTax()
        {
            _sut.AddYearlyTax("a", 2016, 0.1m);
            _sut.AddMonthlyTax("a", 2016, 2, 0.2m);
            _sut.AddDailyTax("a", DateTime.Parse("2016.02.10"), 0.5m);
            _sut.AddDailyTax("a", DateTime.Parse("2016.02.14"), 0.7m);
            _sut.AddWeeklyTax("a", 2016, 2, 2.1m);  //2nd week: 01.04 - 01.10
            _sut.AddWeeklyTax("a", 2016, 7, 2.2m);  //7th week: 02.08 - 02.14

            var result = _sut.GetTax("a", DateTime.Parse("2016.02.07"));

            Assert.That(result, Is.EqualTo(0.2m));

            result = _sut.GetTax("a", DateTime.Parse("2016.02.08"));
            Assert.That(result, Is.EqualTo(2.2m));

            result = _sut.GetTax("a", DateTime.Parse("2016.02.09"));
            Assert.That(result, Is.EqualTo(2.2m));

            result = _sut.GetTax("a", DateTime.Parse("2016.02.10"));    // daytax overrides weektax
            Assert.That(result, Is.EqualTo(0.5m));

            result = _sut.GetTax("a", DateTime.Parse("2016.02.11"));
            Assert.That(result, Is.EqualTo(2.2m));

            result = _sut.GetTax("a", DateTime.Parse("2016.02.13"));
            Assert.That(result, Is.EqualTo(2.2m));

            result = _sut.GetTax("a", DateTime.Parse("2016.02.14"));    // daytax overrides weektax (sunday)
            Assert.That(result, Is.EqualTo(0.7m));

            result = _sut.GetTax("a", DateTime.Parse("2016.01.03"));
            Assert.That(result, Is.EqualTo(0.1m));

            result = _sut.GetTax("a", DateTime.Parse("2016.01.04"));
            Assert.That(result, Is.EqualTo(2.1m));

            result = _sut.GetTax("a", DateTime.Parse("2016.01.10"));
            Assert.That(result, Is.EqualTo(2.1m));

            result = _sut.GetTax("a", DateTime.Parse("2016.01.11"));
            Assert.That(result, Is.EqualTo(0.1m));
        }