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)); }