using System.Collections.Generic;
public int Id { get; set; }
public DateTime BookingStart { get; set; }
public DateTime BookingEnd { get; set; }
private IList<Booking> bookings = new List<Booking>
new Booking { Id = 1, BookingStart = new DateTime(2014, 1, 15, 10, 0, 0), BookingEnd = new DateTime(2014, 1, 15, 11, 0, 0) },
new Booking { Id = 2, BookingStart = new DateTime(2014, 1, 15, 13, 0, 0), BookingEnd = new DateTime(2014, 1, 15, 14, 30, 0) },
new Booking { Id = 3, BookingStart = new DateTime(2014, 1, 15, 16, 0, 0), BookingEnd = new DateTime(2014, 1, 15, 17, 0, 0) }
public bool IsAvailable(DateTime start, DateTime end)
bool available = !bookings.Any(d => (start < d.BookingEnd && end > d.BookingStart));
public bool IsAvailable { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
public TestCase(bool isAvailable, DateTime start, DateTime end)
IsAvailable = isAvailable;
public static void Main()
var meetingRoom = new MeetingRoom();
var testCases = new List<TestCase>
new TestCase(true, new DateTime(2014, 1, 15, 11, 00, 0), new DateTime(2014, 1, 15, 13, 0, 0)),
new TestCase(false, new DateTime(2014, 1, 15, 10, 30, 0), new DateTime(2014, 1, 15, 10, 50, 0)),
new TestCase(false, new DateTime(2014, 1, 15, 11, 00, 0), new DateTime(2014, 1, 15, 13, 30, 0)),
foreach (var testCase in testCases)
if (testCase.IsAvailable != meetingRoom.IsAvailable(testCase.Start, testCase.End))
Console.WriteLine("Incorrect case {0}-{1}", testCase.Start, testCase.End);
Console.WriteLine("Your function is incorrect");
Console.WriteLine("Your function is correct");