예제 #1
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, CustomerContext context)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc();
            CustomerInitializer.Initialize(context);
        }
예제 #2
0
        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));
        }
예제 #3
0
        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));
        }
예제 #4
0
        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);
        }
예제 #5
0
        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();
        }