Пример #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);
        }
        public void should_store_bags_in_order_when_manager_manage_lockers_and_robots()
        {
            var locker  = new Locker(1);
            var lockers = new List <Locker> {
                locker
            };
            var robot = new Robot(new List <Locker> {
                new Locker(1)
            });
            var smartRobot = new SmartRobot(new List <Locker> {
                new Locker(1)
            });
            var superRobot = new SuperRobot(new List <Locker> {
                new Locker(1)
            });
            var baseRobots = new List <BaseRobot> {
                robot, smartRobot, superRobot
            };
            var manager = new Manager(lockers, baseRobots);
            var bag1    = new Bag();
            var bag2    = new Bag();
            var bag3    = new Bag();
            var bag4    = new Bag();
            var ticket1 = manager.Store(bag1);
            var ticket2 = manager.Store(bag2);
            var ticket3 = manager.Store(bag3);
            var ticket4 = manager.Store(bag4);

            Assert.Equal(bag1, locker.Pick(ticket1));
            Assert.Equal(bag2, robot.Pick(ticket2));
            Assert.Equal(bag3, smartRobot.Pick(ticket3));
            Assert.Equal(bag4, superRobot.Pick(ticket4));
        }
        public void should_store_into_smart_robot_when_locker_and_robot_are_full()
        {
            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);

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

            Assert.NotNull(ticket);
            Assert.NotNull(smartRobot.Pick(ticket));
        }
Пример #4
0
        public void should_store_bag_in_sequence_given_all_kinds_of_robots_and_lockers()
        {
            var locker  = new Locker(1);
            var lockers = new List <Locker> {
                locker
            };
            var smartRobot = new SmartRobot(new List <Locker> {
                new Locker(1)
            });
            var superRobot = new SuperRobot(new List <Locker> {
                new Locker(1)
            });

            var robots = new List <SmartRobot> {
                smartRobot,
                superRobot
            };

            var manager = new Manager(lockers, robots);
            var bag1    = new Bag();
            var bag2    = new Bag();
            var bag3    = new Bag();
            var ticket1 = manager.Store(bag1);
            var ticket2 = manager.Store(bag2);
            var ticket3 = manager.Store(bag3);

            Assert.Equal(bag1, locker.Pick(ticket1));
            Assert.Equal(bag2, smartRobot.Pick(ticket2));
            Assert.Equal(bag3, superRobot.Pick(ticket3));
        }
Пример #5
0
        public void should_pick_failed_when_given_no_existing_ticket_to_robot()
        {
            var lockers = Enumerable.Range(0, 5).Select(i => new Locker(1)).ToList();
            var robot   = new SmartRobot(lockers);
            var bag     = robot.Pick(new Ticket());

            Assert.Null(bag);
        }
Пример #6
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);
        }
Пример #7
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);
        }
Пример #8
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);
        }
 public Bag Pick(Ticket ticket)
 {
     return(locker.Pick(ticket) ?? robot.Pick(ticket) ?? smartRobot.Pick(ticket) ?? superRobot.Pick(ticket));
 }
Пример #10
0
        public void should_store_bag_in_sequence_given_all_kinds_of_robots_and_lockers()
        {
            var locker = new Locker(1);
            var lockers = new List<Locker> { locker };
            var smartRobot = new SmartRobot(new List<Locker> {new Locker(1)});
            var superRobot = new SuperRobot(new List<Locker> {new Locker(1)});

            var robots = new List<SmartRobot> {
                smartRobot,
                superRobot
            };

            var manager = new Manager(lockers, robots);
            var bag1 = new Bag();
            var bag2 = new Bag();
            var bag3 = new Bag();
            var ticket1 = manager.Store(bag1);
            var ticket2 = manager.Store(bag2);
            var ticket3 = manager.Store(bag3);

            Assert.Equal(bag1, locker.Pick(ticket1));
            Assert.Equal(bag2, smartRobot.Pick(ticket2));
            Assert.Equal(bag3, superRobot.Pick(ticket3));
        }