Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,134 @@ public void TestOverlapsReturnFalseWhenPeriodOneStartsWhenPeriodTwoEndse()
}


[Fact]
public void TestOverlapsReturnsTrueWhenDateTimeValuesAreSamePeriod()
{
// Arrange
var period1 = new TimePeriod(DateTime.Parse("2024-10-18T11:00:00"), DateTime.Parse("2024-10-18T13:00:00"));
var startdate = DateTime.Parse("2024-10-18T11:00:00");
var endDate = DateTime.Parse("2024-10-18T13:00:00");

// Act
bool overlaps = period1.Overlaps(startdate, endDate); // Should be true

// Assert
overlaps.ShouldBeTrue();
}


[Fact]
public void TestOverlapsReturnsTrueWhenStartDateStartsInPeriod()
{
// Arrange
var period1 = new TimePeriod(DateTime.Parse("2024-10-18T11:00:00"), DateTime.Parse("2024-10-18T14:00:00"));
var startDate = DateTime.Parse("2024-10-18T12:00:00");
var endDate = DateTime.Parse("2024-10-18T16:00:00");

// Act
bool overlaps = period1.Overlaps(startDate, endDate); // Should be true

// Assert
overlaps.ShouldBeTrue();
}



[Fact]
public void TestOverlapsReturnsTrueWhenEndDateStartsInPeriod()
{
// Arrange
var period1 = new TimePeriod(DateTime.Parse("2024-10-18T11:00:00"), DateTime.Parse("2024-10-18T14:00:00"));
var startDate = DateTime.Parse("2024-10-18T09:00:00");
var endDate = DateTime.Parse("2024-10-18T12:00:00");

// Act
bool overlaps = period1.Overlaps(startDate, endDate); // Should be true

// Assert
overlaps.ShouldBeTrue();
}


[Fact]
public void TestOverlapsReturnFalseWhenStartAndEndTimeAfterTimePeriod()
{
// Arrange
var period1 = new TimePeriod(DateTime.Parse("2024-10-18T11:00:00"), DateTime.Parse("2024-10-18T13:00:00"));
var startTime = DateTime.Parse("2024-10-18T14:00:00");
var endTime = DateTime.Parse("2024-10-18T17:00:00");

// Act
bool overlaps = period1.Overlaps(startTime, endTime); // Should be true

// Assert
overlaps.ShouldBeFalse();
}



[Fact]
public void TestOverlapsReturnFalseWhenStartAndEndTimeBeforeTimePeriod()
{
// Arrange
var period1 = new TimePeriod(DateTime.Parse("2024-10-18T11:00:00"), DateTime.Parse("2024-10-18T13:00:00"));
var startTime = DateTime.Parse("2024-10-18T09:00:00");
var endTime = DateTime.Parse("2024-10-18T10:00:00");

// Act
bool overlaps = period1.Overlaps(startTime, endTime); // Should be true

// Assert
overlaps.ShouldBeFalse();
}



[Fact]
public void TestOverlapsReturnFalseWhenStartTimeAtTimePeriodEndTime()
{
// Arrange
var period1 = new TimePeriod(DateTime.Parse("2024-10-18T11:00:00"), DateTime.Parse("2024-10-18T13:00:00"));
var startTime = DateTime.Parse("2024-10-18T13:00:00");
var endTime = DateTime.Parse("2024-10-18T15:00:00");

// Act
bool overlaps = period1.Overlaps(startTime, endTime); // Should be true

// Assert
overlaps.ShouldBeFalse();
}


[Fact]
public void TestOverlapsReturnFalseWhenEndDateAtTimePeriodStartTime()
{
// Arrange
var period1 = new TimePeriod(DateTime.Parse("2024-10-18T11:00:00"), DateTime.Parse("2024-10-18T13:00:00"));
var startTime = DateTime.Parse("2024-10-18T09:00:00");
var endTime = DateTime.Parse("2024-10-18T11:00:00");

// Act
bool overlaps = period1.Overlaps(startTime, endTime); // Should be true

// Assert
overlaps.ShouldBeFalse();
}















[Fact]
public void TestContainsResturnsTrueWhenDateTimeIsWithinPeriod()
{
Expand Down
13 changes: 12 additions & 1 deletion DavidBerry.Framework/DavidBerry.Framework/Util/ITimePeriod.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,23 @@ public interface ITimePeriod

public static class ITimePeriodExtensions
{

/// <summary>
/// Checks if this time period overlaps with another time period
/// </summary>
/// <param name="period1">The first time period</param>
/// <param name="period2">A TimePeriod to see if check for overlap with</param>
/// <returns></returns>
public static bool Overlaps(this ITimePeriod period1, ITimePeriod period2)
{
return period1.StartTime < period2.EndTime && period2.StartTime < period1.EndTime;
}


public static bool Overlaps(this ITimePeriod period1, DateTime startTime, DateTime endTime)
{
return period1.StartTime < endTime && startTime < period1.EndTime;
}

public static bool Contains(this ITimePeriod period, DateTime dateTime)
{
return period.StartTime <= dateTime && dateTime <= period.EndTime;
Expand Down