Exemplo n.º 1
0
        public void LookForSeatInRestaurant()
        {
            ISeatSearcher search = new ConfigurableSeatSearcher(new SpecificRestaurantRepository(), new[] { new EmptySeatsFilter() },
                                                                new[] { new SameFamilyScoreCalculator() }, new[] { new PreferTablesWithGuestsSorter() });
            var query = new UnreservedSeatInRestaurantQuery("De Peirdestal");

            var seats = search.FindSeats(query);

            ValidatePeirdestal(seats);
        }
Exemplo n.º 2
0
        public void RouteQueryToCorrectSearcher()
        {
            ISeatSearcher searchAcrossRestaurants = new ConfigurableSeatSearcher(new SpecificRestaurantRepository(), new[] { new EmptySeatsFilter() },
                                                                                 new[] { new SameFamilyScoreCalculator() }, new[] { new PreferTablesWithGuestsSorter() });
            ISeatSearcher searchSpecificRestaurant = new ConfigurableSeatSearcher(new AllRestaurantRepository(), new[] { new EmptySeatsFilter() },
                                                                                  new[] { new SameFamilyScoreCalculator() }, new[] { new PreferTablesWithGuestsSorter() });
            var mediator = new SearchMediator();

            mediator.Register <UnreservedSeatInRestaurantQuery>(searchAcrossRestaurants);
            mediator.Register <UnreservedSeatForDinerQuery>(searchSpecificRestaurant);

            var searcher = (ISeatSearcher)mediator;

            var unreservedSeatForDinerQuery = new UnreservedSeatForDinerQuery("Dwayne", "Johnson");
            var seats = searcher.FindSeats(unreservedSeatForDinerQuery);

            ValidateMultipleRestaurants(seats);

            var query = new UnreservedSeatInRestaurantQuery("De Peirdestal");

            seats = searcher.FindSeats(query);

            ValidatePeirdestal(seats);
        }