public void OverlapPeriodsTest()
{
DateTime now = ClockProxy.Clock.Now;
TimeRange timeRange1 = new TimeRange( new DateTime( now.Year, now.Month, 8 ), new DateTime( now.Year, now.Month, 18 ) );
TimeRange timeRange2 = new TimeRange( new DateTime( now.Year, now.Month, 10 ), new DateTime( now.Year, now.Month, 11 ) );
TimeRange timeRange3 = new TimeRange( new DateTime( now.Year, now.Month, 13 ), new DateTime( now.Year, now.Month, 15 ) );
TimeRange timeRange4 = new TimeRange( new DateTime( now.Year, now.Month, 9 ), new DateTime( now.Year, now.Month, 13 ) );
TimeRange timeRange5 = new TimeRange( new DateTime( now.Year, now.Month, 15 ), new DateTime( now.Year, now.Month, 17 ) );
TimePeriodCollection timePeriods = new TimePeriodCollection();
timePeriods.Add( timeRange1 );
timePeriods.Add( timeRange2 );
timePeriods.Add( timeRange3 );
timePeriods.Add( timeRange4 );
timePeriods.Add( timeRange5 );
Assert.AreEqual( timePeriods.OverlapPeriods( timeRange1 ).Count, 5 );
Assert.AreEqual( timePeriods.OverlapPeriods( timeRange2 ).Count, 3 );
Assert.AreEqual( timePeriods.OverlapPeriods( timeRange3 ).Count, 2 );
Assert.AreEqual( timePeriods.OverlapPeriods( timeRange4 ).Count, 3 );
Assert.AreEqual( timePeriods.OverlapPeriods( timeRange5 ).Count, 2 );
ITimeRange test1 = timeRange1.Copy( new TimeSpan( 100, 0, 0, 0 ).Negate() );
ITimePeriodCollection insidePeriods1 = timePeriods.OverlapPeriods( test1 );
Assert.AreEqual( insidePeriods1.Count, 0 );
ITimeRange test2 = timeRange1.Copy( new TimeSpan( 100, 0, 0, 0 ) );
ITimePeriodCollection insidePeriods2 = timePeriods.OverlapPeriods( test2 );
Assert.AreEqual( insidePeriods2.Count, 0 );
TimeRange test3 = new TimeRange( new DateTime( now.Year, now.Month, 9 ), new DateTime( now.Year, now.Month, 11 ) );
ITimePeriodCollection insidePeriods3 = timePeriods.OverlapPeriods( test3 );
Assert.AreEqual( insidePeriods3.Count, 3 );
TimeRange test4 = new TimeRange( new DateTime( now.Year, now.Month, 14 ), new DateTime( now.Year, now.Month, 17 ) );
ITimePeriodCollection insidePeriods4 = timePeriods.OverlapPeriods( test4 );
Assert.AreEqual( insidePeriods4.Count, 3 );
}