From ae17955f7fae6428d2b636f9182026ddd177621f Mon Sep 17 00:00:00 2001 From: Arman Date: Sun, 1 Oct 2023 16:18:28 +0300 Subject: [PATCH 1/4] Remove extra empty line --- PersianTools.Core/PersianTools.Core/PersianHelper.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/PersianTools.Core/PersianTools.Core/PersianHelper.cs b/PersianTools.Core/PersianTools.Core/PersianHelper.cs index 163a308..5d85362 100644 --- a/PersianTools.Core/PersianTools.Core/PersianHelper.cs +++ b/PersianTools.Core/PersianTools.Core/PersianHelper.cs @@ -17,7 +17,6 @@ public static class PersianHelper public static Boolean IsValidNationalCode(this String nationalCode) { //در صورتی که کد ملی وارد شده تهی باشد - if (String.IsNullOrEmpty(nationalCode)) throw new ArgumentException("لطفا کد ملی را صحیح وارد نمایید"); From 7ff472eac091eda7daa45a47b60cdd2cc10fee9f Mon Sep 17 00:00:00 2001 From: Arman Date: Sun, 1 Oct 2023 16:19:01 +0300 Subject: [PATCH 2/4] Add all the same digit test for national code validation --- PersianTools.Core/PersianTools.Test/ValidationTests.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/PersianTools.Core/PersianTools.Test/ValidationTests.cs b/PersianTools.Core/PersianTools.Test/ValidationTests.cs index d798fd8..418ca9f 100644 --- a/PersianTools.Core/PersianTools.Test/ValidationTests.cs +++ b/PersianTools.Core/PersianTools.Test/ValidationTests.cs @@ -1,4 +1,5 @@ using PersianTools.Core; +using System; using Xunit; namespace PersianTools.Test @@ -28,5 +29,14 @@ public void When_NationalIdIsFalse_Then_ResultIsFalse(string nationalCode) Assert.False(validate); } + + [Theory] + [InlineData("1111111111")] + public void When_NationalIdIsAllTheSame_Then_ResultIsFalse(string nationalCode) + { + var validate = nationalCode.IsValidNationalCode(); + + Assert.False(validate); + } } } \ No newline at end of file From 63a5db4c8e257580d36a69acd340512fa2f2c33f Mon Sep 17 00:00:00 2001 From: Arman Date: Sun, 1 Oct 2023 16:25:17 +0300 Subject: [PATCH 3/4] Add lunar calendar holidyas for year 1402-1403 --- .../PersianTools.Core/HijriCalendarManager.cs | 15 +++++++ .../PersianTools.Test/DateTimeTests.cs | 39 +++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/PersianTools.Core/PersianTools.Core/HijriCalendarManager.cs b/PersianTools.Core/PersianTools.Core/HijriCalendarManager.cs index 5509bfa..b7eb6f5 100644 --- a/PersianTools.Core/PersianTools.Core/HijriCalendarManager.cs +++ b/PersianTools.Core/PersianTools.Core/HijriCalendarManager.cs @@ -115,6 +115,21 @@ internal static HijriCalendar SetHijriCalendar(DateTime datetime) break; + case 1445: /* 1402-1403 */ + hijri.HijriAdjustment = -1; + + if (month == 3 && day == 1) + { + hijri.HijriAdjustment = -2; + day = hijri.GetDayOfMonth(datetime); + month = hijri.GetMonth(datetime); + } + else if (month == 3 || month == 6 || month == 7 || month == 9 || month == 10) + hijri.HijriAdjustment = -2; + + + break; + default: hijri.HijriAdjustment = -1; break; diff --git a/PersianTools.Core/PersianTools.Test/DateTimeTests.cs b/PersianTools.Core/PersianTools.Test/DateTimeTests.cs index 55ef239..bf72041 100644 --- a/PersianTools.Core/PersianTools.Test/DateTimeTests.cs +++ b/PersianTools.Core/PersianTools.Test/DateTimeTests.cs @@ -291,8 +291,6 @@ public void Hijri_HolyDays_1398To1399(int year, int month, int day) [InlineData(1400, 3, 16)] [InlineData(1400, 4, 30)] [InlineData(1400, 5, 7)] - [InlineData(1400, 5, 27)] - [InlineData(1400, 5, 28)] public void Hijri_HolyDays_1399To1400(int year, int month, int day) { var theDate = new PersianDateTime(year, month, day); @@ -300,7 +298,9 @@ public void Hijri_HolyDays_1399To1400(int year, int month, int day) } - [Theory] + [Theory] // LunarYear 1443, from 19-05-1400 to 08-05-1401 + [InlineData(1400, 5, 27)] + [InlineData(1400, 5, 28)] [InlineData(1400, 7, 5)] [InlineData(1400, 7, 13)] [InlineData(1400, 7, 14)] @@ -317,6 +317,13 @@ public void Hijri_HolyDays_1399To1400(int year, int month, int day) [InlineData(1401, 3, 6)] [InlineData(1401, 4, 19)] [InlineData(1401, 4, 27)] + public void Hijri_HolyDays_1401To1402_lunarYear1443(int year, int month, int day) + { + var theDate = new PersianDateTime(year, month, day); + Assert.True(CheckHijriHolyday(theDate), CombineDates(theDate)); + } + + [Theory]// LunarYear 1444, from 08-05-1401 to 27-04-1402 [InlineData(1401, 5, 16)] [InlineData(1401, 5, 17)] [InlineData(1401, 6, 26)] @@ -334,7 +341,31 @@ public void Hijri_HolyDays_1399To1400(int year, int month, int day) [InlineData(1402, 2, 26)] [InlineData(1402, 4, 8)] [InlineData(1402, 4, 16)] - public void Hijri_HolyDays_1400To1401(int year, int month, int day) + public void Hijri_HolyDays_1401To1402_lunarYear1444(int year, int month, int day) + { + var theDate = new PersianDateTime(year, month, day); + Assert.True(CheckHijriHolyday(theDate), CombineDates(theDate)); + } + + [Theory] // LunarYear 1445, from 28-04-1402 to 18-04-1403 + [InlineData(1402, 05, 05)] + [InlineData(1402, 05, 06)] + [InlineData(1402, 06, 15)] + [InlineData(1402, 06, 23)] + [InlineData(1402, 06, 25)] + [InlineData(1402, 07, 02)] + [InlineData(1402, 07, 11)] + [InlineData(1402, 09, 26)] + [InlineData(1402, 11, 05)] + [InlineData(1402, 11, 19)] + [InlineData(1402, 12, 06)] + [InlineData(1403, 01, 13)] + [InlineData(1403, 01, 23)] + [InlineData(1403, 01, 24)] + [InlineData(1403, 02, 16)] + [InlineData(1403, 03, 28)] + [InlineData(1403, 04, 05)] + public void Hijri_HolyDays_1402To1403_lunarYear1445(int year, int month, int day) { var theDate = new PersianDateTime(year, month, day); Assert.True(CheckHijriHolyday(theDate), CombineDates(theDate)); From 2733d938bd36f8dce084577a2762b04388967fb8 Mon Sep 17 00:00:00 2001 From: Arman Date: Sun, 1 Oct 2023 16:38:11 +0300 Subject: [PATCH 4/4] Add curly braces around the nested statement for the if block --- PersianTools.Core/PersianTools.Core/HijriCalendarManager.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PersianTools.Core/PersianTools.Core/HijriCalendarManager.cs b/PersianTools.Core/PersianTools.Core/HijriCalendarManager.cs index b7eb6f5..ba78193 100644 --- a/PersianTools.Core/PersianTools.Core/HijriCalendarManager.cs +++ b/PersianTools.Core/PersianTools.Core/HijriCalendarManager.cs @@ -125,8 +125,10 @@ internal static HijriCalendar SetHijriCalendar(DateTime datetime) month = hijri.GetMonth(datetime); } else if (month == 3 || month == 6 || month == 7 || month == 9 || month == 10) + { hijri.HijriAdjustment = -2; - + } + break;