public void should_store_in_locker_with_most_available_boxes()
        {
            smartRobot.Manage(lockers);

            var    storedBag = new Bag();
            Ticket ticket1   = smartRobot.Store(storedBag);
            Bag    pickedBag = locker2.Pick(ticket1);

            Assert.That(pickedBag, Is.SameAs(storedBag));
        }
        public void should_store_into_super_robot_when_locker_and_robot_and_smart_robot_are_all_full()
        {
            var superRobot = new SuperRobot();

            superRobot.Manage(new List <Locker> {
                new Locker(1)
            });

            var smartRobot = new SmartRobot();

            smartRobot.Manage(new List <Locker> {
                new Locker(1)
            });

            var robot = new Robot();

            robot.Manage(new List <Locker> {
                new Locker(1)
            });

            var locker = new Locker(1);

            var manager = new Manager(locker, robot, smartRobot, superRobot);

            manager.Store(new Bag());
            manager.Store(new Bag());
            manager.Store(new Bag());
            var ticket = manager.Store(new Bag());

            Assert.NotNull(ticket);
            Assert.NotNull(superRobot.Pick(ticket));
        }
        public void should_return_bag_when_pick_if_bag_is_stored_into_super_robot()
        {
            var superRobot = new SuperRobot();

            superRobot.Manage(new List <Locker> {
                new Locker(1)
            });

            var smartRobot = new SmartRobot();

            smartRobot.Manage(new List <Locker> {
                new Locker(1)
            });

            var robot = new Robot();

            robot.Manage(new List <Locker> {
                new Locker(1)
            });

            var locker = new Locker(1);

            var manager = new Manager(locker, robot, smartRobot, superRobot);

            manager.Store(new Bag());
            manager.Store(new Bag());
            manager.Store(new Bag());
            var storedBag = new Bag();
            var ticket    = manager.Store(storedBag);

            var pickedBag = manager.Pick(ticket);

            Assert.AreEqual(pickedBag, storedBag);
        }