public void Should_Return_True_When_List_Hours_Conflict_In_The_Range()
        {
            var currentBookingRange = new BookingRange
            {
                Year   = 2017,
                Mounth = Month.August,
                Day    = 9,
                Hours  = new List <int> {
                    10
                }
            };

            var bookingRange = new BookingRange
            {
                Year   = 2017,
                Mounth = Month.August,
                Day    = 9,
                Hours  = new List <int> {
                    9, 10, 11
                }
            };

            var result = currentBookingRange.IsConflict(bookingRange);

            Assert.IsTrue(result);
        }
        public bool DoesConflict(BookingRange b, DateTimeOffset start, DateTimeOffset end)
        {
            return
                // Bookings with the same start or end time
                ((b.StartAt == start || b.EndAt == end)

                 // Bookings overlapping the start of our window of interest
                 || (b.StartAt < start && b.EndAt > start)

                 // Bookings overlapping the end of our window of interest
                 || (b.StartAt < end && b.EndAt > end)

                 // Bookings during our window of interest
                 || (b.StartAt > start && b.EndAt < end));
        }
        public void Should_Return_False_When_List_Hours_is_Empty()
        {
            var currentBookingRange = new BookingRange
            {
                Year   = 2017,
                Mounth = Month.August,
                Day    = 9,
                Hours  = new List <int>()
            };

            var bookingRange = new BookingRange
            {
                Year   = 2017,
                Mounth = Month.August,
                Day    = 9,
                Hours  = new List <int> {
                    9, 10, 11
                }
            };

            var result = currentBookingRange.IsConflict(bookingRange);

            Assert.IsFalse(result);
        }