public void TimeSlot_CompareTo_Illegal()
        {
            var slot1 = new TimeSlot(1, DayOfWeek.Tuesday);

            Assert.AreEqual(1, slot1.CompareTo(null));
            Assert.AreEqual(1, slot1.CompareTo((object)null));
            AssertEx.Throws <ArgumentException>(() => slot1.CompareTo(1), "Cannot compare TimeSlot with value of type Int32.");
        }
        public void TimeSlot_CompareTo_Same()
        {
            var slot1 = new TimeSlot(1, DayOfWeek.Monday);
            var slot2 = new TimeSlot(1, DayOfWeek.Monday);

            Assert.AreEqual(0, slot1.CompareTo(slot2));
            Assert.AreEqual(0, slot1.CompareTo((object)slot2));
        }
        public void TimeSlot_CompareTo_OrderOfDays()
        {
            var monday = new TimeSlot(1, DayOfWeek.Monday);
            var sunday = new TimeSlot(1, DayOfWeek.Sunday);

            Assert.AreEqual(-1, monday.CompareTo(sunday));
            Assert.AreEqual(1, sunday.CompareTo(monday));

            Assert.AreEqual(0, monday.CompareTo(monday));
            Assert.AreEqual(0, sunday.CompareTo(sunday));
        }
        public void TimeSlot_CompareTo_SameDay_SameHour_DifferentActive()
        {
            var slot1 = new TimeSlot(0, DayOfWeek.Monday);
            var slot2 = new TimeSlot(0, DayOfWeek.Monday, false);

            Assert.AreEqual(1, slot1.CompareTo(slot2));
            Assert.AreEqual(-1, slot2.CompareTo(slot1));
        }
        public void TimeSlot_CompareTo_DifferentDay_SameHour()
        {
            var slot1 = new TimeSlot(1, DayOfWeek.Monday);
            var slot2 = new TimeSlot(1, DayOfWeek.Tuesday);

            Assert.AreEqual(1, slot2.CompareTo(slot1));
            Assert.AreEqual(-1, slot1.CompareTo(slot2));
        }