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 ); }