public void TestAvailability() { var classroomRepository = new TestClassroomRepository { //Given Courses = new List <Course> { new Course() { Week = 1, WeekDay = 1, StartBlock = 2, EndBlock = 5, Rooms = new List <Classroom>() { new Classroom { RoomId = "H.1.110" } } }, new Course() { Week = 1, WeekDay = 1, StartBlock = 7, EndBlock = 9, Rooms = new List <Classroom>() { new Classroom { RoomId = "H.1.110" } } } } }; var bookings = new List <Booking>(); var bookingRepository = new TestBookingRepository(bookings); var service = new BookingService(bookingRepository, classroomRepository); var existingLessons = classroomRepository.GetCoursesByRoomAndWeek("H.1.110", 1); //When var booking1 = GenerateBooking("H.1.110", 1, 1, 1, 1); // 1-1 out 2-5 and 7-9 -> 0 var booking2 = GenerateBooking("H.1.110", 3, 5, 1, 1); // 3-5 in 2-5 and under 7-9 -> 1 var booking3 = GenerateBooking("H.1.110", 3, 9, 1, 1); // 3-9 in 2-5 and 7-9 -> 2 var booking4 = GenerateBooking("H.1.110", 8, 10, 1, 1); // 8-11 out 2-5 and in 7-9 -> 1 //Then var availability1 = service.CourseAvailability(existingLessons, booking1); Assert.AreEqual(0, availability1.Count, "A1 failed"); var availability2 = service.CourseAvailability(existingLessons, booking2); Assert.AreEqual(1, availability2.Count, "A2 failed"); var availability3 = service.CourseAvailability(existingLessons, booking3); Assert.AreEqual(2, availability3.Count, "A3 failed"); var availability4 = service.CourseAvailability(existingLessons, booking4); Assert.AreEqual(1, availability4.Count, "A4 failed"); }