Пример #1
0
        public void should_pick_failed_when_given_used_ticket_to_robot()
        {
            var lockers    = Enumerable.Range(0, 5).Select(i => new Locker(1)).ToList();
            var robot      = new SmartRobot(lockers);
            var usedTicket = robot.Store(new Bag());

            robot.Store(new Bag());
            robot.Pick(usedTicket);

            var bagNoExisting = robot.Pick(usedTicket);

            Assert.Null(bagNoExisting);
        }
Пример #2
0
        public void should_throw_exception_when_store_a_bag_if_all_lockers_are_full()
        {
            smartRobot = new SmartRobot(new List <Locker>()
            {
                new Locker(1), new Locker(2)
            });
            for (var i = 0; i < 3; i++)
            {
                smartRobot.Store(new Bag());
            }

            Assert.Throws <InvalidOperationException>(() => smartRobot.Store(new Bag()));
        }
Пример #3
0
        public void should_return_specific_bag_when_store_bag_to_robot_for_multiple_times()
        {
            var expectedBag1 = new Bag();
            var expectedBag2 = new Bag();

            var lockers = Enumerable.Range(0, 3).Select(i => new Locker(2)).ToList();
            var robot   = new SmartRobot(lockers);
            var ticket1 = robot.Store(expectedBag1);

            robot.Store(expectedBag2);

            var bag1 = robot.Pick(ticket1);

            Assert.Equal(expectedBag1, bag1);
        }
Пример #4
0
        public void should_select_the_locker_with_most_boxes_when_store_a_bag()
        {
            var locker1 = new Locker(2);
            var locker2 = new Locker(2);
            var lockers = new List <Locker> {
                locker1, locker2
            };

            var robot = new SmartRobot(lockers);

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

            Assert.NotNull(locker2.Pick(ticket));
        }
Пример #5
0
        public void should_store_failed_when_robot_manange_no_locker()
        {
            var lockers = Enumerable.Range(0, 0).Select(i => new Locker(1)).ToList();
            var robot   = new SmartRobot(lockers);
            var ticket  = robot.Store(new Bag());

            Assert.Null(ticket);
        }
        public void should_get_a_ticket_when_store_a_bag()
        {
            SmartRobot smartRobot = new SmartRobot(oneLocker);
            Bag        bag        = new Bag();

            Ticket ticket = smartRobot.Store(bag);

            Assert.NotNull(ticket);
        }
Пример #7
0
        public void should_store_failed_when_lockers_robot_managed_has_been_all_full()
        {
            var bag1 = new Bag();
            var bag2 = new Bag();
            var bag3 = new Bag();
            var bag4 = new Bag();
            var bag5 = new Bag();

            var lockers = Enumerable.Range(0, 2).Select(i => new Locker(2)).ToList();
            var robot   = new SmartRobot(lockers);

            robot.Store(bag1);
            robot.Store(bag2);
            robot.Store(bag3);
            robot.Store(bag4);
            var ticket = robot.Store(bag5);

            Assert.Null(ticket);
        }
        public void should_return_error_message_when_robot_without_lockers()
        {
            List <IBagKeeper> emptyLockers = new List <IBagKeeper>();
            var bag1 = new Bag();

            var smartRobot = new SmartRobot(emptyLockers);

            var ex = Assert.Throws <ArgumentException>(() => smartRobot.Store(bag1));

            Assert.That(ex.Message, Is.EqualTo("No locker is available"));
        }
Пример #9
0
        public void should_get_a_ticket_when_smartrobot_store_a_bag_in_locker()
        {
            smartRobot = new SmartRobot(new List <Locker>()
            {
                new Locker(1)
            });
            var    bag    = new Bag();
            Ticket ticket = smartRobot.Store(bag);

            Assert.NotNull(ticket);
        }
Пример #10
0
        public void should_return_ticket_after_store_a_bag_by_robot()
        {
            var bag     = new Bag();
            var lockers = Enumerable.Range(0, 1).Select(i => new Locker(1)).ToList();
            var robot   = new SmartRobot(lockers);


            Ticket ticket = robot.Store(bag);

            Assert.NotNull(ticket);
        }
Пример #11
0
        public void should_store_bag_in_locker_which_has_more_capacity()
        {
            var locker1 = new Locker(1);
            var locker2 = new Locker(2);

            smartRobot = new SmartRobot(new List <Locker>()
            {
                locker1, locker2
            });
            smartRobot.Store(new Bag());
            Assert.Equal(1, locker2.AvailableCount);
        }
Пример #12
0
        public void should_return_bag_when_pick_bag_from_robot_with_ticket()
        {
            var expectedBag = new Bag();
            var lockers     = Enumerable.Range(0, 1).Select(i => new Locker(1)).ToList();
            var robot       = new SmartRobot(lockers);

            var ticket = robot.Store(expectedBag);

            var bag = robot.Pick(ticket);

            Assert.Equal(expectedBag, bag);
        }
Пример #13
0
        public void should_return_the_bag_stored_in_smartrobot_by_the_ticket()
        {
            var lockers = new List <Locker>();
            var locker  = new Locker(1);

            lockers.Add(locker);

            var robot  = new SmartRobot(lockers);
            var bag    = new Bag();
            var ticket = robot.Store(bag);

            Assert.AreSame(robot.Pick(ticket), bag);
        }
        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));
        }
Пример #15
0
        public void shoud_store_bag_in_the_locker_which_has_lagest_capacity()
        {
            var lockers = new List <Locker>();
            var locker  = new Locker(2);

            locker.Store(new Bag());
            lockers.Add(locker);
            var secondLocker = new Locker(2);

            lockers.Add(secondLocker);

            var robot  = new SmartRobot(lockers);
            var bag    = new Bag();
            var ticket = robot.Store(bag);

            Assert.AreSame(bag, secondLocker.Pick(ticket));
        }
        public void should_store_bag_in_the_locker_which_has_largest_number_of_empty_boxes()
        {
            var bag1 = new Bag();
            var bag2 = new Bag();
            var bag3 = new Bag();
            var bag4 = new Bag();

            lockers[0].Store(bag1);
            lockers[1].Store(bag2);
            lockers[3].Store(bag3);
            var smartRobot = new SmartRobot(lockers);
            var ticket4    = smartRobot.Store(bag4);

            Assert.Null(lockers[0].Pick(ticket4));
            Assert.Null(lockers[1].Pick(ticket4));
            Assert.Null(lockers[3].Pick(ticket4));
            Assert.AreSame(bag4, lockers[2].Pick(ticket4));
        }
        public Ticket Store(Bag bag)
        {
            var ticket = locker.Store(bag) ?? (robot.Store(bag) ?? (smartRobot.Store(bag) ?? superRobot.Store(bag)));

            return(ticket);
        }