public void CopyTest()
{
TimeRange readOnlyTimeRange = new TimeRange( start, end );
Assert.AreEqual( readOnlyTimeRange.Copy( TimeSpan.Zero ), readOnlyTimeRange );
TimeRange timeRange = new TimeRange( start, end );
Assert.AreEqual( timeRange.Start, start );
Assert.AreEqual( timeRange.End, end );
ITimeRange noMoveTimeRange = timeRange.Copy( TimeSpan.Zero );
Assert.AreEqual( noMoveTimeRange.Start, start );
Assert.AreEqual( noMoveTimeRange.End, end );
Assert.AreEqual( noMoveTimeRange.Duration, duration );
TimeSpan forwardOffset = new TimeSpan( 2, 30, 15 );
ITimeRange forwardTimeRange = timeRange.Copy( forwardOffset );
Assert.AreEqual( forwardTimeRange.Start, start.Add( forwardOffset ) );
Assert.AreEqual( forwardTimeRange.End, end.Add( forwardOffset ) );
TimeSpan backwardOffset = new TimeSpan( -1, 10, 30 );
ITimeRange backwardTimeRange = timeRange.Copy( backwardOffset );
Assert.AreEqual( backwardTimeRange.Start, start.Add( backwardOffset ) );
Assert.AreEqual( backwardTimeRange.End, end.Add( backwardOffset ) );
}