From 6100741c74ff2fd5a37e4966e2d604258378764e Mon Sep 17 00:00:00 2001 From: Daniel Sklenitzka Date: Mon, 24 Sep 2018 14:58:36 +0200 Subject: [PATCH 1/6] Additional holidays (#2) * update version in holidays.austria * fathers day, mothers day, valentines day added * Refactoring, added Halloween --- softaware.Holidays.Austria.Tests/Tests.cs | 33 +++++++++++++++++ softaware.Holidays.Austria/Generator.cs | 7 +++- .../softaware.Holidays.Austria.csproj | 2 +- softaware.Holidays.Core/Generator.cs | 35 ++++++++++++++++--- softaware.Holidays.Core/Holiday.cs | 7 +++- 5 files changed, 76 insertions(+), 8 deletions(-) diff --git a/softaware.Holidays.Austria.Tests/Tests.cs b/softaware.Holidays.Austria.Tests/Tests.cs index 9bbc446..62d89e6 100644 --- a/softaware.Holidays.Austria.Tests/Tests.cs +++ b/softaware.Holidays.Austria.Tests/Tests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Xunit; +using System.Linq; namespace softaware.Holidays.Austria.Tests { @@ -14,20 +15,52 @@ public void Holidays2018() Assert.Equal(holidays, new List() { new Model.Holiday { Name = "Neujahr", Date = new DateTime(2018, 1, 1) }, new Model.Holiday { Name = "Heilige Drei Könige", Date = new DateTime(2018, 1, 6) }, + new Model.Holiday { Name = "Valentinstag", Date = new DateTime(2018, 2, 14) }, new Model.Holiday { Name = "Karfreitag", Date = new DateTime(2018, 3, 30) }, new Model.Holiday { Name = "Ostersonntag", Date = new DateTime(2018, 4, 1) }, new Model.Holiday { Name = "Ostermontag", Date = new DateTime(2018, 4, 2) }, new Model.Holiday { Name = "Staatsfeiertag", Date = new DateTime(2018, 5, 1) }, + new Model.Holiday { Name = "Muttertag", Date = new DateTime(2018, 5, 13) }, new Model.Holiday { Name = "Christi Himmelfahrt", Date = new DateTime(2018, 5, 10) }, new Model.Holiday { Name = "Pfingstmontag", Date = new DateTime(2018, 5, 21) }, new Model.Holiday { Name = "Fronleichnam", Date = new DateTime(2018, 5, 31) }, + new Model.Holiday { Name = "Vatertag", Date = new DateTime(2018, 6, 10) }, new Model.Holiday { Name = "Mariä Himmelfahrt", Date = new DateTime(2018, 8, 15) }, new Model.Holiday { Name = "Nationalfeiertag", Date = new DateTime(2018, 10, 26) }, + new Model.Holiday { Name = "Halloween", Date = new DateTime(2018, 10, 31) }, new Model.Holiday { Name = "Allerheiligen", Date = new DateTime(2018, 11, 1) }, new Model.Holiday { Name = "Mariä Empfängnis", Date = new DateTime(2018, 12, 8) }, new Model.Holiday { Name = "Christtag", Date = new DateTime(2018, 12, 25) }, new Model.Holiday { Name = "Stefanitag", Date = new DateTime(2018, 12, 26) }, }); } + + [Fact] + public void FathersDay() + { + var fathersday2018 = new Holidays.Generator().ForAustria(2018).Where(h => h.Name.Equals("Vatertag")).First().Date; + var fathersday2019 = new Holidays.Generator().ForAustria(2019).Where(h => h.Name.Equals("Vatertag")).First().Date; + var fathersday2020 = new Holidays.Generator().ForAustria(2020).Where(h => h.Name.Equals("Vatertag")).First().Date; + var fathersday2021 = new Holidays.Generator().ForAustria(2021).Where(h => h.Name.Equals("Vatertag")).First().Date; + + Assert.Equal(fathersday2018, new DateTime(2018, 6, 10)); + Assert.Equal(fathersday2019, new DateTime(2019, 6, 9)); + Assert.Equal(fathersday2020, new DateTime(2020, 6, 14)); + Assert.Equal(fathersday2021, new DateTime(2021, 6, 13)); + } + + [Fact] + public void MothersDay() + { + var mothersday2018 = new Holidays.Generator().ForAustria(2018).Where(h => h.Name.Equals("Muttertag")).First().Date; + var mothersday2019 = new Holidays.Generator().ForAustria(2019).Where(h => h.Name.Equals("Muttertag")).First().Date; + var mothersday2020 = new Holidays.Generator().ForAustria(2020).Where(h => h.Name.Equals("Muttertag")).First().Date; + var mothersday2021 = new Holidays.Generator().ForAustria(2021).Where(h => h.Name.Equals("Muttertag")).First().Date; + + Assert.Equal(mothersday2018, new DateTime(2018, 5, 13)); + Assert.Equal(mothersday2019, new DateTime(2019, 5, 12)); + Assert.Equal(mothersday2020, new DateTime(2020, 5, 10)); + Assert.Equal(mothersday2021, new DateTime(2021, 5, 9)); + } } } diff --git a/softaware.Holidays.Austria/Generator.cs b/softaware.Holidays.Austria/Generator.cs index 450993b..f0cf4df 100644 --- a/softaware.Holidays.Austria/Generator.cs +++ b/softaware.Holidays.Austria/Generator.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using softaware.Holidays.Model; namespace softaware.Holidays.Austria @@ -20,15 +21,19 @@ public static IEnumerable ForAustria(this Holidays.Generator generator, yield return holiday.WithDate("Neujahr", month: 1, day: 1); yield return holiday.WithDate("Heilige Drei Könige", month: 1, day: 6); + yield return holiday.WithDate("Valentinstag", month: 2, day: 14, workingDay: true); yield return holiday.BeforeEaster("Karfreitag", days: 2); yield return holiday.AfterEaster("Ostersonntag", days: 0); yield return holiday.AfterEaster("Ostermontag", days: 1); yield return holiday.WithDate("Staatsfeiertag", month: 5, day: 1); + yield return holiday.NthDayInMonth("Muttertag", 2, DayOfWeek.Sunday, 5); yield return holiday.AfterEaster("Christi Himmelfahrt", days: 39); yield return holiday.AfterEaster("Pfingstmontag", days: 50); yield return holiday.AfterEaster("Fronleichnam", days: 60); + yield return holiday.NthDayInMonth("Vatertag", 2, DayOfWeek.Sunday, 6); yield return holiday.WithDate("Mariä Himmelfahrt", month: 8, day: 15); yield return holiday.WithDate("Nationalfeiertag", month: 10, day: 26); + yield return holiday.WithDate("Halloween", month: 10, day: 31, workingDay: true); yield return holiday.WithDate("Allerheiligen", month: 11, day: 1); yield return holiday.WithDate("Mariä Empfängnis", month: 12, day: 8); yield return holiday.WithDate("Christtag", month: 12, day: 25); diff --git a/softaware.Holidays.Austria/softaware.Holidays.Austria.csproj b/softaware.Holidays.Austria/softaware.Holidays.Austria.csproj index 69684c3..5b05a15 100644 --- a/softaware.Holidays.Austria/softaware.Holidays.Austria.csproj +++ b/softaware.Holidays.Austria/softaware.Holidays.Austria.csproj @@ -2,7 +2,7 @@ netstandard1.0 - 1.0.0 + 1.0.1 https://github.com/softawaregmbh/library-holidays https://github.com/softawaregmbh/library-holidays git diff --git a/softaware.Holidays.Core/Generator.cs b/softaware.Holidays.Core/Generator.cs index adbf1f7..03518c6 100644 --- a/softaware.Holidays.Core/Generator.cs +++ b/softaware.Holidays.Core/Generator.cs @@ -14,31 +14,56 @@ public class GeneratorFunctions private readonly DateTime easterSunday; internal GeneratorFunctions(DateTime easterSunday) : base() => this.easterSunday = easterSunday; - + /// /// Creates a holiday on a specific date in the same year as the easter sunday. /// /// The name of the holiday. /// The month of the holiday's date. /// The day of the holiday's date. + /// Indicates if the day is a working day or not. /// The holiday. - public Holiday WithDate(string name, int month, int day) => new Holiday { Name = name, Date = new DateTime(easterSunday.Year, month, day) }; - + public Holiday WithDate(string name, int month, int day, bool workingDay = false) => new Holiday { Name = name, Date = new DateTime(easterSunday.Year, month, day), WorkingDay = workingDay }; + /// /// Creates a holiday with n days before the easter sunday. /// /// The name of the holiday. /// The amount of days before easter sunday. + /// Indicates if the day is a working day or not. /// The holiday. - public Holiday BeforeEaster(string name, int days) => new Holiday { Name = name, Date = easterSunday.Subtract(new TimeSpan(days, 0, 0, 0)) }; + public Holiday BeforeEaster(string name, int days, bool workingDay = false) => new Holiday { Name = name, Date = easterSunday.Subtract(new TimeSpan(days, 0, 0, 0)), WorkingDay = workingDay }; /// /// Creates a holiday with n days after the easter sunday. /// /// The name of the holiday. /// The amount of days after easter sunday. + /// Indicates if the day is a working day or not. /// The holiday. - public Holiday AfterEaster(string name, int days) => new Holiday { Name = name, Date = easterSunday.Add(new TimeSpan(days, 0, 0, 0)) }; + public Holiday AfterEaster(string name, int days, bool workingDay = false) => new Holiday { Name = name, Date = easterSunday.Add(new TimeSpan(days, 0, 0, 0)), WorkingDay = workingDay }; + + /// + /// Creates a holiday as the n-th appearance of a given weekday in a month. + /// + /// The name of the holiday. + /// The number of appearances of the weekday in the given month. + /// The weekday. + /// The month. + /// Indicates if the day is a working day or not. + /// The holiday. + public Holiday NthDayInMonth(string name, int n, DayOfWeek day, int month, bool workingDay = false) + { + var date = new DateTime(easterSunday.Year, month, 1); + while (date.DayOfWeek != day) + { + date = date.AddDays(1); + } + + date = date.AddDays(7 * (n - 1)); + + return new Holiday { Name = name, Date = date, WorkingDay = workingDay }; + } } /// diff --git a/softaware.Holidays.Core/Holiday.cs b/softaware.Holidays.Core/Holiday.cs index 8b0aa6b..8fbbc61 100644 --- a/softaware.Holidays.Core/Holiday.cs +++ b/softaware.Holidays.Core/Holiday.cs @@ -16,7 +16,12 @@ public class Holiday /// Date of the holiday. /// public DateTime Date { get; set; } - + + /// + /// Indicates if the day is a working day or not. + /// + public bool WorkingDay { get; set; } + /// /// Checks whether two holidays are the same. /// From 948dd00d5ab70b965aad54ddee885d495f65f766 Mon Sep 17 00:00:00 2001 From: Johannes Egger Date: Tue, 13 Nov 2018 22:28:49 +0100 Subject: [PATCH 2/6] Test that easter sunday is always a sunday --- softaware.Holidays.Core.Tests/Tests.cs | 10 ++++++++++ .../softaware.Holidays.Core.Tests.csproj | 1 + 2 files changed, 11 insertions(+) diff --git a/softaware.Holidays.Core.Tests/Tests.cs b/softaware.Holidays.Core.Tests/Tests.cs index 977d990..9494429 100644 --- a/softaware.Holidays.Core.Tests/Tests.cs +++ b/softaware.Holidays.Core.Tests/Tests.cs @@ -1,4 +1,6 @@ using System; +using FsCheck; +using FsCheck.Xunit; using Xunit; namespace softaware.Holidays.Core.Tests @@ -20,5 +22,13 @@ public void EasterSunday2019() new Generator().EasterSunday(2019), new DateTime(2019, 4, 21)); } + + [Property] + public void ShouldBeSunday(PositiveInt year) + { + Assert.Equal( + DayOfWeek.Sunday, + new Generator().EasterSunday(year.Get).DayOfWeek); + } } } diff --git a/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj b/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj index 6baa015..16ce9d4 100644 --- a/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj +++ b/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj @@ -7,6 +7,7 @@ + From 0f0b4b60baeb305b4ab9e9d75cab61a615e46604 Mon Sep 17 00:00:00 2001 From: Johannes Egger Date: Tue, 13 Nov 2018 22:29:38 +0100 Subject: [PATCH 3/6] Fix argument order --- softaware.Holidays.Core.Tests/Tests.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/softaware.Holidays.Core.Tests/Tests.cs b/softaware.Holidays.Core.Tests/Tests.cs index 977d990..c6d5878 100644 --- a/softaware.Holidays.Core.Tests/Tests.cs +++ b/softaware.Holidays.Core.Tests/Tests.cs @@ -9,16 +9,16 @@ public class Tests public void EasterSunday2018() { Assert.Equal( - new Generator().EasterSunday(2018), - new DateTime(2018, 4, 1)); + new DateTime(2018, 4, 1), + new Generator().EasterSunday(2018)); } [Fact] public void EasterSunday2019() { Assert.Equal( - new Generator().EasterSunday(2019), - new DateTime(2019, 4, 21)); + new DateTime(2019, 4, 21), + new Generator().EasterSunday(2019)); } } } From ba6e41a6b31adaeddd12b9ef141e4a8f748c2528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20D=C3=B6rr?= Date: Thu, 21 Nov 2024 10:01:15 +0100 Subject: [PATCH 4/6] upgrade to netstandard2 --- .../softaware.Holidays.Austria.Tests.csproj | 11 +++++++---- .../softaware.Holidays.Austria.csproj | 4 ++-- .../softaware.Holidays.Core.Tests.csproj | 13 ++++++++----- .../softaware.Holidays.Core.csproj | 4 ++-- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/softaware.Holidays.Austria.Tests/softaware.Holidays.Austria.Tests.csproj b/softaware.Holidays.Austria.Tests/softaware.Holidays.Austria.Tests.csproj index 0b87f48..133d40c 100644 --- a/softaware.Holidays.Austria.Tests/softaware.Holidays.Austria.Tests.csproj +++ b/softaware.Holidays.Austria.Tests/softaware.Holidays.Austria.Tests.csproj @@ -1,15 +1,18 @@ - netcoreapp2.0 + net9.0 false - - - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/softaware.Holidays.Austria/softaware.Holidays.Austria.csproj b/softaware.Holidays.Austria/softaware.Holidays.Austria.csproj index 5b05a15..928ac49 100644 --- a/softaware.Holidays.Austria/softaware.Holidays.Austria.csproj +++ b/softaware.Holidays.Austria/softaware.Holidays.Austria.csproj @@ -1,8 +1,8 @@  - netstandard1.0 - 1.0.1 + netstandard2.0 + 2.0.0 https://github.com/softawaregmbh/library-holidays https://github.com/softawaregmbh/library-holidays git diff --git a/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj b/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj index 16ce9d4..8bd1ede 100644 --- a/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj +++ b/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj @@ -1,16 +1,19 @@ - netcoreapp2.0 + net9.0 false - - - - + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/softaware.Holidays.Core/softaware.Holidays.Core.csproj b/softaware.Holidays.Core/softaware.Holidays.Core.csproj index 1881bc6..7b803d2 100644 --- a/softaware.Holidays.Core/softaware.Holidays.Core.csproj +++ b/softaware.Holidays.Core/softaware.Holidays.Core.csproj @@ -1,8 +1,8 @@  - netstandard1.0 - 1.0.0 + netstandard2.0 + 2.0.0 https://github.com/softawaregmbh/library-holidays https://github.com/softawaregmbh/library-holidays git From 96926fffc515885b2e4ef0141f80792fd021bcd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20D=C3=B6rr?= Date: Thu, 21 Nov 2024 10:06:33 +0100 Subject: [PATCH 5/6] add package-icon.png --- Assets/package-icon.png | Bin 0 -> 30691 bytes .../softaware.Holidays.Austria.csproj | 12 ++++++++---- .../softaware.Holidays.Core.csproj | 12 ++++++++---- 3 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 Assets/package-icon.png diff --git a/Assets/package-icon.png b/Assets/package-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9b2edbe039d0bd95d12f97a852d1b32e94a349ec GIT binary patch literal 30691 zcmb@tg;!PG7d3oAL8O~YBOxK(-60^|A{~l!mxLhQ-Jl>KAt@!@NJ>bDbc1wW?z`{v zd*46c8{-=Tf#KkubN1S6uQk`4^F*ktDqx|Lp+g`LEX9|ynh*#w_!Sv~h6;Y1drjSf zA5WcL8n{9r*gc4UNGUI{$srILh@z~Nw%7c@l4n)nmEX$M)ugIpLqqEVhL1shRT8br zudi>+f5loEM)X(X&m|BkWY80g^)Og?_nm&VA?#Poo=vqhVCR-gNMx!ec&vejtdAUJ zWXI8v=Bg&47La@I%%1u+8ilw6+4s09kK{>5MsrB>itp&z-TlvmBAdwY@bClXA|)DH z+I$H3MvD#s-~Rvq_5aHiT@>b6J`Vi**NrW;wid?L)x)6lp`}U@+ALcgM$!Hei9vud`J?*PlgTPhEb<{IPE7KlA6zlRF_jCt#6wP1Bci0u;r7-}<)X1V9lWf5 z!Lo!9*^MU*Hm?%qQKU`erD{>7o8Wz}DxJvt^JKrfQ7zf) zu|^!zNkn2G%@J<@LS+(_BL0#Kq=U2JQODq7LKN78N{Khres@}Gd%i5F;>>j z!=kCXrdbAdJf7<_8C$jz0l4(Thk5JzH&R|zF0%su_Si$iretL0gc=ZBQfX&={9bnZ zfDGfR2;fWS zH*unO(nU-e5Mo^Qk(}SADeAnNEvQjh;u}F9yCNArkMbu_Y3U-Yx z$^uX%-V-o>jJ%+#9uZC2Y(}L+&QN?lbj4}VlJ(v{cX!Z_B|aQEaNxUZH)_m-4*$>X z9aQokizsAAe2Z05V1mWi6D_MuIU-?3JggG3akZWKQr$NXYcen5?5&vv zEusmrHAhD{joR|Y@1G4e+4My!X!FlCe=%T)Z)I2Q>g4pF>W!NJRIQBbd6GYU`2mJ( z2zzlJEDW|MwIQ6k-nk$&vZ3IsY=rVBj1!zEkNSrvv8I`P?)wfcU{)qD0z`a-!n;_0v_!*6KBH1>)bhrm4?Qg7d+wq*T=Fg6fYUf(AZDQ; z>2P!7zt8JI;uABCnYQlu=3$Ew}$T=I5mP`rpUgR-O^ zuw){~8_}s~tf54F`0`=G{x{9hsgD+z!5?e7~^ z`b`Qq*|dh=bk^6n1-s85;s5FKKlMl{H+pWXM~I5pv<3kPy<0Gr?!t;i$&DxpfBT>= z93ShdG?LEqQ$&o#W|QaE7^jJEw%;Fx^s<~D-l+zB6i7k?o04>XkHwc0O!B2OyG!<} zMSmm?yHy4I#VVoMtDI|=)WxPSCgR>2b8cf&GO8Bhy;n*fc%=sLg5S>E=rO;=R=&2MSV7C>z!4 z-<>ca;RnT|yocJ^d2uGtW#YebQ96cP9F^H!j=I|KFSy<7+)Cv*RE1KzyF=p+-q&X^ zw)-{ymfdwI8oc7x6Z>@%L9GLg7lA)$Kiz1x`XGRbgbAOlVq>*5YmYk&T5 zIMtmHmK~<)JLGBNm|V_Vq>bN8slI{<;*7y~YyX5*k3 zAx8(PxkHwe?vY+M(4FTvS(|WFKQ{VGQeGxV>)64CvB6XDVXtS!qTVI3X|J0lk_j>} zn);PXYVmE;1#;HX*_-9t=WL!4{*8(YMzrC+JvN`EBU;9Tp#($2oW`P~UMGUCf09I7 zj*CIjvOEYvr$0tlK^j=t*=6jp`Qb-v5|-L9P}iqbUT3nk*q4TuA4}$!&~TbT3!YL} zgkv0o-?k z@Wtms&4a7eac2V$?StdhYVV8!-#wN*(k`H$z~FCM_R5So5~{HG%SvsKl_)PeA@L>w zM?7T9bLSQuFjX#)$K4jx{nhB{^UO5pkW&Yx$xnh$ox8!-e_d`KNVz2__b}d4f<47I z{}E=gv6S$2Jm%3SJ04|db27J9G!f3az8pmkJ=1Y~5oDvNYqnsM?O#_{rEBXAFNr{V zet!63$#P}}<8k!A-R6LZxj~s%dPiCspo%!;2|hhpXV=?Tt6KI;d11JcKi)3QF+1fU zo*;5lwY<#CspTC%H`u+%cd<@Ebq6(QE?*m1z(`^F_|--!v(HPz*H;IQtXH3FS$IL4 zwzu;8zHLDDI@{rxQ2(8H6t(++kdFN6lW!Ya10r<6@upCgWDu6+_m%D4CA|T?pweX< z!&sg1;}gFL(u&L)B?Sao5ClZyP}~b)vZ6r1DO~(nX1HSA>YA#2QK@xo^qCwHy*Y+d zLk?V7%EiyWe%-Xc5)%2|`w_sgN)8pR{2oRn(Uz)S^D`mh%(0WfJx2n@HZuPNqpyb? z1U>8^gFvNtNl<#@mmd0EIb=h{2Hg|~H4tnCc;F!|JaBZGiV@b+Sn^DgbbS-dBkAy=DptE>ir<2LdQq_b z7ngPo;EWS?{64=XnBeV<6aE3SN?ll4Px&*Zact6sLCz9CK!sl{&UPjIcBYN9QF357 zp)L{{I*JbJ3}z0^-XsqHO<$pjdC83t@$0cKQ9iO?lXKSo?kHRjFTulIJme>l@*$j} zV({eNE!T2)RafUT+yAww-xvbg6nLHdXH%zlLi{JpR1*JcL8y|d(OIJ3p_@YO&W$%u zrwOuOKVT8b$odbMdUo)Qmix!jSx88aR{Y)AdLkyN^5noqnC1Od91ΞN)k(b&H$h%bXCyHdXigASTH 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, Holiday softaware gmbh softaware gmbh - https://github.com/softawaregmbh/library-holidays/blob/master/LICENSE true - https://secure.gravatar.com/avatar/d441f5a5514d2afce7da518a89f028d0?s=512&r=g&d=retro - A simple .netstandard library for automatically generating holidays. -This is the library for Austrian holidays. + package-icon.png + MIT + A simple .netstandard library for automatically generating holidays. This is the library for Austrian holidays. + Update to netstandard2.0 @@ -29,4 +29,8 @@ This is the library for Austrian holidays. + + + + diff --git a/softaware.Holidays.Core/softaware.Holidays.Core.csproj b/softaware.Holidays.Core/softaware.Holidays.Core.csproj index 7b803d2..5493242 100644 --- a/softaware.Holidays.Core/softaware.Holidays.Core.csproj +++ b/softaware.Holidays.Core/softaware.Holidays.Core.csproj @@ -9,11 +9,11 @@ softaware, Holiday softaware gmbh softaware gmbh - https://github.com/softawaregmbh/library-holidays/blob/master/LICENSE true - https://secure.gravatar.com/avatar/d441f5a5514d2afce7da518a89f028d0?s=512&r=g&d=retro - A simple .netstandard library for automatically generating holidays. -This is the core library. + package-icon.png + MIT + A simple .netstandard library for automatically generating holidays. This is the core library. + Update to netstandard2.0 @@ -25,4 +25,8 @@ This is the core library. bin\Release\netstandard1.0\softaware.Holidays.Core.xml + + + + From feb6a211df5425df662f1211038454419cb24167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20D=C3=B6rr?= Date: Thu, 21 Nov 2024 10:34:50 +0100 Subject: [PATCH 6/6] removed not needed FsCheck dependency --- softaware.Holidays.Core.Tests/Tests.cs | 2 -- .../softaware.Holidays.Core.Tests.csproj | 1 - 2 files changed, 3 deletions(-) diff --git a/softaware.Holidays.Core.Tests/Tests.cs b/softaware.Holidays.Core.Tests/Tests.cs index 3064b56..ba65970 100644 --- a/softaware.Holidays.Core.Tests/Tests.cs +++ b/softaware.Holidays.Core.Tests/Tests.cs @@ -1,6 +1,4 @@ using System; -using FsCheck; -using FsCheck.Xunit; using Xunit; namespace softaware.Holidays.Core.Tests diff --git a/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj b/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj index 8bd1ede..cf20770 100644 --- a/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj +++ b/softaware.Holidays.Core.Tests/softaware.Holidays.Core.Tests.csproj @@ -7,7 +7,6 @@ -