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)); }
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)); }
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); }
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); }
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_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)); }
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)); }