Skip to content

Commit

Permalink
#39 - Recent holiday changes in Germany
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin Willey committed Sep 14, 2019
1 parent b6d036d commit 665badd
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 8 deletions.
30 changes: 29 additions & 1 deletion src/PublicHoliday/GermanPublicHoliday.cs
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,27 @@ public static DateTime Assumption(int year)
/// </value>
public bool HasAssumption => States.SL == State;

/// <summary>
/// Kindertag - World Children's Day
/// </summary>
/// <param name="year"></param>
/// <returns></returns>
public static DateTime WorldChildrensDay(int year)
{
return new DateTime(year, 9, 20);
}

/// <summary>
/// Whether this state observes Kindertag
/// </summary>
/// <param name="year"></param>
/// <returns></returns>
public bool HasWorldChildrensDay(int year)
{
return (year >= 2019 && State == States.TH);
}


/// <summary>
/// Tag der Deutschen Einheit - German Unity
/// </summary>
Expand All @@ -252,7 +273,7 @@ public static DateTime Reformation(int year)
/// <value>
/// <c>true</c> if this state observes Reformationstag; otherwise, <c>false</c>.
/// </value>
public bool HasReformation => Array.IndexOf(new[] { States.BB, States.MV, States.SN, States.ST, States.TH }, State) > -1;
public bool HasReformation => Array.IndexOf(new[] { States.BB, States.MV, States.SN, States.ST, States.TH, States.HB, States.HH, States.NI, States.SH }, State) > -1;

/// <summary>
/// Allerheiligen - All Saints
Expand Down Expand Up @@ -345,6 +366,7 @@ public override IList<DateTime> PublicHolidays(int year)
bHols.Add(PentecostMonday(year));
if (HasCorpusChristi) bHols.Add(CorpusChristi(year));
if (HasAssumption) bHols.Add(Assumption(year));
if (HasWorldChildrensDay(2019)) bHols.Add(WorldChildrensDay(2019));
bHols.Add(GermanUnity(year));
//All states observe Reformation in 2017, 500th anniversary
if (HasReformation || year == 2017) bHols.Add(Reformation(year));
Expand Down Expand Up @@ -374,6 +396,7 @@ public override IDictionary<DateTime, string> PublicHolidayNames(int year)
bHols.Add(PentecostMonday(year), "Pfingstmontag");
if (HasCorpusChristi) bHols.Add(CorpusChristi(year), "Fronleichnam");
if (HasAssumption) bHols.Add(Assumption(year), "Mariä Himmelfahrt");
if (HasWorldChildrensDay(2019)) bHols.Add(WorldChildrensDay(2019), "Kindertag");
bHols.Add(GermanUnity(year), "Tag der Deutschen Einheit");
if (HasReformation || year == 2017) bHols.Add(Reformation(year), "Reformationstag");
if (HasAllSaints) bHols.Add(AllSaints(year), "Allerheiligen");
Expand Down Expand Up @@ -431,6 +454,11 @@ public override bool IsPublicHoliday(DateTime dt)
return true;
break;

case 9:
if (HasWorldChildrensDay(year) && WorldChildrensDay(year) == date)
return true;
break;

case 10:
if (GermanUnity(year) == date)
return true;
Expand Down
4 changes: 2 additions & 2 deletions src/PublicHoliday/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.6.0")]
[assembly: AssemblyFileVersion("2.0.6.0")]
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
5 changes: 3 additions & 2 deletions src/PublicHoliday/PublicHoliday.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@

2.0.4: UK Early May Day 2020 moved (thanks @skipishere)
2.0.5: UK Early May Day 2020 Monday (thanks @deltafsdevelopment )
2.0.6: IsWorkingDay added (thanks @MilkyWare)</PackageReleaseNotes>
2.0.6: IsWorkingDay added (thanks @MilkyWare)
2.0.7: DE recent changes (thanks @janaw)</PackageReleaseNotes>
<PackageProjectUrl>https://github.com/martinjw/Holiday</PackageProjectUrl>
<PackageLicenseUrl>http://opensource.org/licenses/MIT</PackageLicenseUrl>
<RepositoryType>git</RepositoryType>
Expand All @@ -26,7 +27,7 @@
<GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
<Version>2.0.6</Version>
<Version>2.0.7</Version>
</PropertyGroup>
<PropertyGroup>
<FrameworkPathOverride Condition="'$(TargetFramework)' == 'net35'">C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client</FrameworkPathOverride>
Expand Down
4 changes: 2 additions & 2 deletions tests/PublicHolidayTests/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.6.0")]
[assembly: AssemblyFileVersion("2.0.6.0")]
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
17 changes: 16 additions & 1 deletion tests/PublicHolidayTests/TestGermanyPublicHoliday.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public void TestHolidays2018Lists()
}

[TestMethod]
public void TestSaxonyRepetanceDay()
public void TestSaxonyRepentenceDay()
{
var actual = GermanPublicHoliday.Repentance(2017);
Assert.AreEqual(new DateTime(2017, 11, 22), actual);
Expand All @@ -84,5 +84,20 @@ public void TestSaxonyRepetanceDay()
var calendar2 = new GermanPublicHoliday { State = GermanPublicHoliday.States.HE };
Assert.IsFalse(calendar2.HasRepentance);
}

[TestMethod]
public void TestThüringenChildrensDay()
{
var calendar = new GermanPublicHoliday { State = GermanPublicHoliday.States.SN };
Assert.IsFalse(calendar.HasWorldChildrensDay(2019));

var calendar2 = new GermanPublicHoliday { State = GermanPublicHoliday.States.TH };
//did not have official holiday in 2018
Assert.IsFalse(calendar2.HasWorldChildrensDay(2018));
Assert.IsFalse(calendar2.PublicHolidays(2018).Contains(new DateTime(2018, 9, 20)));
//introduced official holiday in 2019
Assert.IsTrue(calendar2.HasWorldChildrensDay(2019));
Assert.IsTrue(calendar2.PublicHolidays(2019).Contains(new DateTime(2019, 9, 20)));
}
}
}

0 comments on commit 665badd

Please sign in to comment.