public string Customer_TypeA_Given_Preference(params string[] rawCustomerDetails) { // When multiple customers arrive at same time, with same number of items, Customer "TypeA" chooses first. var customers = new CustomerInitializer(rawCustomerDetails).Initialize(); var customerQueueResolver = new CustomerQueueResolver(); var firstCustomer = customerQueueResolver.Resolve(customers).First(); return(string.Format("{0} {1} {2}", firstCustomer.SelectionStrategy.GetType() == typeof(TypeASelectionStrategy) ? "A" : "B", firstCustomer.TimeToQueue, firstCustomer.Items)); }
public string Customers_With_Fewer_Items_Given_Preference(params string[] rawCustomerDetails) { // When multiple customers arrive at same time, those with fewer items get to choose register first. var customers = new CustomerInitializer(rawCustomerDetails).Initialize(); var customerQueueResolver = new CustomerQueueResolver(); var firstCustomer = customerQueueResolver.Resolve(customers).First(); return(string.Format("{0} {1} {2}", firstCustomer.SelectionStrategy.GetType() == typeof(TypeASelectionStrategy) ? "A" : "B", firstCustomer.TimeToQueue, firstCustomer.Items)); }
public int GroceryStore_Executes_With_Correctness(int totalRegisters, params string[] rawCustomerDetails) { var registerInitializer = new RegisterInitializer(totalRegisters); var customerInitializer = new CustomerInitializer(rawCustomerDetails); var customerQueueResolver = new CustomerQueueResolver(); var store = new GroceryStore(registerInitializer, customerInitializer, customerQueueResolver); store.Start(); return(store.MinutesOpen); }
static void Main(string[] args) { var inputFilePath = args.Length > 0 ? args[0] : "input.txt"; var lines = File.ReadAllLines(inputFilePath); var registerInitializer = new RegisterInitializer(Convert.ToInt32(lines[0])); var customerInitializer = new CustomerInitializer(lines.Skip(1).ToArray()); var customerQueueResolver = new CustomerQueueResolver(); var store = new GroceryStore(registerInitializer, customerInitializer, customerQueueResolver); store.Start(); Console.WriteLine("Finished at: t={0} minutes", store.MinutesOpen); Console.Read(); }