diff --git a/Program.cs b/Program.cs
new file mode 100644
index 0000000..7256f18
--- /dev/null
+++ b/Program.cs
@@ -0,0 +1,41 @@
+using System;
+
+namespace interns_challenge
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ // implement
+ HolidayCalendar.HolidayCalendar calendar = new HolidayCalendar.HolidayCalendar();
+
+ DateTime testDate = new DateTime(2024, 12, 25);
+ bool isHoliday = calendar.IsHoliday(testDate);
+
+ Console.WriteLine($"Is {testDate.Date} a holiday? {isHoliday}");
+
+ DateTime startDate = new DateTime(2024, 1, 1);
+ DateTime endDate = new DateTime(2024, 12, 31);
+ var holidays = calendar.GetHolidays(startDate, endDate);
+
+ Console.WriteLine($"Holidays in 2024: ");
+ foreach (var holiday in holidays)
+ {
+ Console.WriteLine(holiday);
+ }
+ }
+ }
+}
+/*
+here is what i got after run code
+Is 12/25/2024 12:00:00 AM a holiday? False
+Holidays in 2024:
+1/1/2024 12:00:00 AM
+3/28/2024 12:00:00 AM
+3/29/2024 12:00:00 AM
+3/31/2024 12:00:00 AM
+5/9/2024 12:00:00 AM
+5/19/2024 12:00:00 AM
+5/20/2024 12:00:00 AM
+6/5/2024 12:00:00 AM
+*/
\ No newline at end of file
diff --git a/interns-challenge.csproj b/interns-challenge.csproj
new file mode 100644
index 0000000..ec4e3f4
--- /dev/null
+++ b/interns-challenge.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ netcoreapp3.1
+ interns_challenge
+
+
+
+
+
+
+
+
diff --git a/src/HolidayCalendar/HolidayCalendar.cs b/src/HolidayCalendar/HolidayCalendar.cs
index 1830192..4cffebc 100644
--- a/src/HolidayCalendar/HolidayCalendar.cs
+++ b/src/HolidayCalendar/HolidayCalendar.cs
@@ -1,18 +1,53 @@
using System;
-using System.Collections;
+using System.Collections.Generic;
-namespace HolidayCalendar;
-public class HolidayCalendar : IHolidayCalendar
+namespace HolidayCalendar
{
- public bool IsHoliday(DateTime date)
- {
- // TODO - replace the below exception with your own implementation
- throw new NotImplementedException();
- }
-
- public ICollection GetHolidays(DateTime startDate, DateTime endDate)
- {
- // TODO - replace the below exception with your own implementation
- throw new NotImplementedException();
- }
+ public class HolidayCalendar : IHolidayCalendar
+ {
+ public bool IsHoliday(DateTime date)
+ {
+
+ if (date.Year == 2024 && date.Month == 1 && date.Day == 1)
+ return true;
+
+ if (date.Year == 2024 && date.Month == 3 && date.Day == 28)
+ return true;
+
+ if (date.Year == 2024 && date.Month == 3 && date.Day == 29)
+ return true;
+
+ if (date.Year == 2024 && date.Month == 3 && (date.Day == 31 || date.Day == 1))
+ return true;
+
+ if (date.Year == 2024 && date.Month == 5 && date.Day == 9)
+ return true;
+
+ if (date.Year == 2024 && date.Month == 5 && (date.Day == 19 || date.Day == 20))
+ return true;
+
+ if (date.Year == 2024 && date.Month == 6 && date.Day == 5)
+ return true;
+
+ return false;
+ }
+
+
+ public ICollection GetHolidays(DateTime startDate, DateTime endDate)
+ {
+ // TODO: Implement holiday logic
+ List holidays = new List();
+
+ for (DateTime currentDate = startDate; currentDate <= endDate; currentDate = currentDate.AddDays(1))
+ {
+ if (IsHoliday(currentDate))
+ {
+ holidays.Add(currentDate);
+ }
+ }
+
+ return holidays;
+ }
+ }
}
+
\ No newline at end of file
diff --git a/src/HolidayCalendar/IHolidayCalendar.cs b/src/HolidayCalendar/IHolidayCalendar.cs
index b8c9237..9f4966a 100644
--- a/src/HolidayCalendar/IHolidayCalendar.cs
+++ b/src/HolidayCalendar/IHolidayCalendar.cs
@@ -1,10 +1,11 @@
using System;
-using System.Collections;
+using System.Collections.Generic;
-namespace HolidayCalendar;
-public interface IHolidayCalendar
+namespace HolidayCalendar
{
- bool IsHoliday(DateTime date);
-
- ICollection GetHolidays(DateTime startDate, DateTime endDate);
-}
+ public interface IHolidayCalendar
+ {
+ bool IsHoliday(DateTime date);
+ ICollection GetHolidays(DateTime startDate, DateTime endDate);
+ }
+}
\ No newline at end of file
diff --git a/tests/HolidayCalendar.Tests/HolidayTests.cs b/tests/HolidayCalendar.Tests/HolidayTests.cs
index 7441621..fa59791 100644
--- a/tests/HolidayCalendar.Tests/HolidayTests.cs
+++ b/tests/HolidayCalendar.Tests/HolidayTests.cs
@@ -1,53 +1,54 @@
using NUnit.Framework;
using System;
-namespace HolidayCalendar.Tests;
-
-public class HolidayTests
+namespace HolidayCalendar.Tests
{
- private readonly IHolidayCalendar fixture = new HolidayCalendar();
-
- [Test]
- public void GIVEN_XmasDay_WHEN_IsHoliday_THEN_return_true()
- {
- // Arrange
- var date = new DateTime(2023, 12, 25);
-
- // Act
- var result = fixture.IsHoliday(date);
-
- // Assert
- Assert.IsTrue(result);
- }
-
- [Test]
- public void GIVEN_regular_weekday_WHEN_IsHoliday_THEN_return_false()
- {
- // Arrange
- var date = new DateTime(2023, 4, 21);
-
- // Act
- var result = fixture.IsHoliday(date);
-
- // Assert
- Assert.IsFalse(result);
- }
-
- [Test]
- public void GIVEN_April2023_WHEN_GetHolidays_THEN_return_EasterDays()
- {
- // Arrange
- var startDate = new DateTime(2023, 4, 1);
- var endDate = new DateTime(2023, 4, 30);
-
- // Act
- var result = fixture.GetHolidays(startDate, endDate);
-
- // Assert
- Assert.IsTrue(result.Contains(new DateTime(2023, 4, 6))); // Maundy Thursday
- Assert.IsTrue(result.Contains(new DateTime(2023, 4, 7))); // Good Friday
- Assert.IsTrue(result.Contains(new DateTime(2023, 4, 9))); // Easter Sunday
- Assert.IsTrue(result.Contains(new DateTime(2023, 4, 10))); // Easter Monday
- Assert.AreEqual(4, result.Count);
- }
+ public class HolidayTests
+ {
+ private readonly IHolidayCalendar fixture = new HolidayCalendar();
+
+ [Test]
+ public void GIVEN_XmasDay_WHEN_IsHoliday_THEN_return_true()
+ {
+ // Arrange
+ var date = new DateTime(2023, 12, 25);
+
+ // Act
+ var result = fixture.IsHoliday(date);
+
+ // Assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void GIVEN_regular_weekday_WHEN_IsHoliday_THEN_return_false()
+ {
+ // Arrange
+ var date = new DateTime(2023, 4, 21);
+
+ // Act
+ var result = fixture.IsHoliday(date);
+
+ // Assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void GIVEN_April2023_WHEN_GetHolidays_THEN_return_EasterDays()
+ {
+ // Arrange
+ var startDate = new DateTime(2023, 4, 1);
+ var endDate = new DateTime(2023, 4, 30);
+
+ // Act
+ var result = fixture.GetHolidays(startDate, endDate);
+
+ // Assert
+ Assert.IsTrue(result.Contains(new DateTime(2023, 4, 6))); // Maundy Thursday
+ Assert.IsTrue(result.Contains(new DateTime(2023, 4, 7))); // Good Friday
+ Assert.IsTrue(result.Contains(new DateTime(2023, 4, 9))); // Easter Sunday
+ Assert.IsTrue(result.Contains(new DateTime(2023, 4, 10))); // Easter Monday
+ Assert.AreEqual(4, result.Count);
+ }
+ }
}