public void RemoveTest()
        {
            SchoolDay schoolDay = new SchoolDay();

            // first
            int         count      = schoolDay.Count;
            DateTime    end        = schoolDay.End;
            ITimePeriod removeItem = schoolDay.First;
            TimeSpan    duration   = schoolDay.Duration;

            schoolDay.Remove(removeItem);
            Assert.AreEqual(schoolDay.Count, count - 1);
            Assert.AreNotEqual(schoolDay.First, removeItem);
            Assert.AreEqual(schoolDay.End, end);
            Assert.AreEqual(schoolDay.Duration, duration.Subtract(removeItem.Duration));

            // inside
            count    = schoolDay.Count;
            duration = schoolDay.Duration;
            DateTime    start = schoolDay.Start;
            ITimePeriod first = schoolDay.First;
            ITimePeriod last  = schoolDay.Last;

            removeItem = schoolDay[1];
            schoolDay.Remove(removeItem);
            Assert.AreEqual(schoolDay.Count, count - 1);
            Assert.AreNotEqual(schoolDay[1], removeItem);
            Assert.AreEqual(schoolDay.First, first);
            Assert.AreEqual(schoolDay.Start, start);
            Assert.AreEqual(schoolDay.Last, last);
            Assert.AreEqual(schoolDay.Duration, duration.Subtract(removeItem.Duration));

            // last
            count      = schoolDay.Count;
            start      = schoolDay.Start;
            duration   = schoolDay.Duration;
            removeItem = schoolDay.Last;
            schoolDay.Remove(removeItem);
            Assert.AreEqual(schoolDay.Count, count - 1);
            Assert.AreNotEqual(schoolDay.Last, removeItem);
            Assert.AreEqual(schoolDay.Start, start);
            Assert.AreEqual(schoolDay.Duration, duration.Subtract(removeItem.Duration));
        }         // RemoveTest
        public void IndexOfTest()
        {
            SchoolDay schoolDay = new SchoolDay();

            Assert.AreEqual(schoolDay.IndexOf(new TimeRange()), -1);
            Assert.AreEqual(schoolDay.IndexOf(new TimeBlock()), -1);

            Assert.AreEqual(schoolDay.IndexOf(schoolDay.Lesson1), 0);
            Assert.AreEqual(schoolDay.IndexOf(schoolDay.Break1), 1);
            Assert.AreEqual(schoolDay.IndexOf(schoolDay.Lesson2), 2);
            Assert.AreEqual(schoolDay.IndexOf(schoolDay.Break2), 3);
            Assert.AreEqual(schoolDay.IndexOf(schoolDay.Lesson3), 4);
            Assert.AreEqual(schoolDay.IndexOf(schoolDay.Break3), 5);
            Assert.AreEqual(schoolDay.IndexOf(schoolDay.Lesson4), 6);

            schoolDay.Remove(schoolDay.Lesson1);
            Assert.AreEqual(schoolDay.IndexOf(schoolDay.Lesson1), -1);
        }         // IndexOfTest
        public void ContainsTest()
        {
            SchoolDay schoolDay = new SchoolDay();

            Assert.IsFalse(schoolDay.Contains(new TimeRange()));
            Assert.IsFalse(schoolDay.Contains(new TimeBlock()));

            Assert.IsTrue(schoolDay.Contains(schoolDay.Lesson1));
            Assert.IsTrue(schoolDay.Contains(schoolDay.Break1));
            Assert.IsTrue(schoolDay.Contains(schoolDay.Lesson2));
            Assert.IsTrue(schoolDay.Contains(schoolDay.Break2));
            Assert.IsTrue(schoolDay.Contains(schoolDay.Lesson3));
            Assert.IsTrue(schoolDay.Contains(schoolDay.Break3));
            Assert.IsTrue(schoolDay.Contains(schoolDay.Lesson4));

            schoolDay.Remove(schoolDay.Lesson1);
            Assert.IsFalse(schoolDay.Contains(schoolDay.Lesson1));
        }         // ContainsTest
        public void IndexOfTest()
        {
            SchoolDay schoolDay = new SchoolDay();

            Assert.Equal(schoolDay.IndexOf(new TimeRange()), -1);
            Assert.Equal(schoolDay.IndexOf(new TimeBlock()), -1);

            Assert.Equal(0, schoolDay.IndexOf(schoolDay.Lesson1));
            Assert.Equal(1, schoolDay.IndexOf(schoolDay.Break1));
            Assert.Equal(2, schoolDay.IndexOf(schoolDay.Lesson2));
            Assert.Equal(3, schoolDay.IndexOf(schoolDay.Break2));
            Assert.Equal(4, schoolDay.IndexOf(schoolDay.Lesson3));
            Assert.Equal(5, schoolDay.IndexOf(schoolDay.Break3));
            Assert.Equal(6, schoolDay.IndexOf(schoolDay.Lesson4));

            schoolDay.Remove(schoolDay.Lesson1);
            Assert.Equal(schoolDay.IndexOf(schoolDay.Lesson1), -1);
        }         // IndexOfTest
        public void RemoveTest()
        {
            SchoolDay schoolDay = new SchoolDay();

            // first
            int count = schoolDay.Count;
            DateTime end = schoolDay.End;
            ITimePeriod removeItem = schoolDay.First;
            TimeSpan duration = schoolDay.Duration;
            schoolDay.Remove( removeItem );
            Assert.AreEqual( schoolDay.Count, count - 1 );
            Assert.AreNotEqual( schoolDay.First, removeItem );
            Assert.AreEqual( schoolDay.End, end );
            Assert.AreEqual( schoolDay.Duration, duration.Subtract( removeItem.Duration ) );

            // inside
            count = schoolDay.Count;
            duration = schoolDay.Duration;
            DateTime start = schoolDay.Start;
            ITimePeriod first = schoolDay.First;
            ITimePeriod last = schoolDay.Last;
            removeItem = schoolDay[ 1 ];
            schoolDay.Remove( removeItem );
            Assert.AreEqual( schoolDay.Count, count - 1 );
            Assert.AreNotEqual( schoolDay[ 1 ], removeItem );
            Assert.AreEqual( schoolDay.First, first );
            Assert.AreEqual( schoolDay.Start, start );
            Assert.AreEqual( schoolDay.Last, last );
            Assert.AreEqual( schoolDay.Duration, duration.Subtract( removeItem.Duration ) );

            // last
            count = schoolDay.Count;
            start = schoolDay.Start;
            duration = schoolDay.Duration;
            removeItem = schoolDay.Last;
            schoolDay.Remove( removeItem );
            Assert.AreEqual( schoolDay.Count, count - 1 );
            Assert.AreNotEqual( schoolDay.Last, removeItem );
            Assert.AreEqual( schoolDay.Start, start );
            Assert.AreEqual( schoolDay.Duration, duration.Subtract( removeItem.Duration ) );
        }
        public void IndexOfTest()
        {
            SchoolDay schoolDay = new SchoolDay();

            Assert.AreEqual( schoolDay.IndexOf( new TimeRange() ), -1 );
            Assert.AreEqual( schoolDay.IndexOf( new TimeBlock() ), -1 );

            Assert.AreEqual( schoolDay.IndexOf( schoolDay.Lesson1 ), 0 );
            Assert.AreEqual( schoolDay.IndexOf( schoolDay.Break1 ), 1 );
            Assert.AreEqual( schoolDay.IndexOf( schoolDay.Lesson2 ), 2 );
            Assert.AreEqual( schoolDay.IndexOf( schoolDay.Break2 ), 3 );
            Assert.AreEqual( schoolDay.IndexOf( schoolDay.Lesson3 ), 4 );
            Assert.AreEqual( schoolDay.IndexOf( schoolDay.Break3 ), 5 );
            Assert.AreEqual( schoolDay.IndexOf( schoolDay.Lesson4 ), 6 );

            schoolDay.Remove( schoolDay.Lesson1 );
            Assert.AreEqual( schoolDay.IndexOf( schoolDay.Lesson1 ), -1 );
        }
        public void ContainsTest()
        {
            SchoolDay schoolDay = new SchoolDay();

            Assert.IsFalse( schoolDay.Contains( new TimeRange() ) );
            Assert.IsFalse( schoolDay.Contains( new TimeBlock() ) );

            Assert.IsTrue( schoolDay.Contains( schoolDay.Lesson1 ) );
            Assert.IsTrue( schoolDay.Contains( schoolDay.Break1 ) );
            Assert.IsTrue( schoolDay.Contains( schoolDay.Lesson2 ) );
            Assert.IsTrue( schoolDay.Contains( schoolDay.Break2 ) );
            Assert.IsTrue( schoolDay.Contains( schoolDay.Lesson3 ) );
            Assert.IsTrue( schoolDay.Contains( schoolDay.Break3 ) );
            Assert.IsTrue( schoolDay.Contains( schoolDay.Lesson4 ) );

            schoolDay.Remove( schoolDay.Lesson1 );
            Assert.IsFalse( schoolDay.Contains( schoolDay.Lesson1 ) );
        }