public Manager(Locker locker, Robot robot = null, SmartRobot smartRobot = null, SuperRobot superRobot = null) { this.locker = locker; this.robot = robot; this.smartRobot = smartRobot; this.superRobot = superRobot; }
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_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 test_superrobot_should_has_empty_box() { var superRobot = new SuperRobot(); superRobot.Add(new Cabinet()); Assert.IsTrue(superRobot.HasEmptyBox()); }
public void should_get_error_message_when_manager_is_full() { //Given var bagKeepers = new List <IBagKeeper>(); IBagKeeper lockerForManager = new Locker(1); lockerListForRobot = new List <IBagKeeper>(); lockerListForRobot.Add(new Locker(1)); var lockerListForSmartRobot = new List <IBagKeeper>(); lockerListForSmartRobot.Add(new Locker(1)); var lockerListForSuperRobot = new List <IBagKeeper>(); lockerListForSuperRobot.Add(new Locker(1)); robot = new Robot(lockerListForRobot); var smartRobot = new SmartRobot(lockerListForSmartRobot); var superRobot = new SuperRobot(lockerListForSuperRobot); bagKeepers.Add(smartRobot); bagKeepers.Add(superRobot); bagKeepers.Add(lockerForManager); bagKeepers.Add(robot); manager = new Manager(bagKeepers); //When for (int i = 0; i < 4; i++) { manager.Store(new Bag()); } //Then var ex = Assert.Throws <ArgumentException>(() => manager.Store(new Bag())); Assert.That(ex.Message, Is.EqualTo("The manager is full!")); }
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_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); }
public void test_superrobot_can_store_bag() { var superRobot = new SuperRobot(); superRobot.Add(new Cabinet()); var ticket = superRobot.Store(new Bag()); Assert.IsNotNull(ticket); }
public void should_return_ticket_when_store_bag() { var bag = new Bag(); var superRobot = new SuperRobot(new List <Locker> { new Locker(1) }); Ticket ticket = superRobot.Store(bag); Assert.NotNull(ticket); }
public void should_pick_bag_with_ticket() { var expectedBag = new Bag(); var superRobot = new SuperRobot(new List <Locker> { new Locker(1) }); var ticket = superRobot.Store(expectedBag); var bag = superRobot.Pick(ticket); Assert.Equal(expectedBag, bag); }
public void should_get_a_ticket_when_robot_store_a_bag_in_locker() { superRobot = new SuperRobot(new List <Locker>() { new Locker(1) }); var bag = new Bag(); Ticket ticket = superRobot.Store(bag); Assert.NotNull(ticket); }
public void should_pick_bag_when_robot_uses_right_ticket() { superRobot = new SuperRobot(new List <Locker>() { new Locker(1) }); var bag = new Bag(); Ticket ticket = superRobot.Store(bag); Bag pickdBag = superRobot.Pick(ticket); Assert.Same(bag, pickdBag); }
public void should_store_bag_in_most_vacancy_rate_locker_in_superrobot() { var locker1 = new Locker(2); var locker2 = new Locker(4); superRobot = new SuperRobot(new List <Locker>() { locker1, locker2 }); locker2.Store(new Bag()); superRobot.Store(new Bag()); Assert.Equal(1, locker1.AvailableCount); }
public void should_store_bag_in_max_vacancy_locker() { var locker1 = new Locker(2); var locker2 = new Locker(1); var lockers = new List <Locker> { locker1, locker2 }; locker1.Store(new Bag()); var superRobot = new SuperRobot(lockers); superRobot.Store(new Bag()); Assert.False(locker2.IsAvailable); }
public void should_return_validate_ticket_and_Save_to_MoreEmptyBoxRateCabinet_when_store_given_has_empty_box() { var superRobot = new SuperRobot(); var cabinet1 = new Cabinet(2); var cabinet2 = new Cabinet(1); superRobot.Add(cabinet1); superRobot.Add(cabinet2); var ticket1 = Ticket.CreateTicket("SuperRobot"); ticket1 = cabinet1.Store(new Bag(), ticket1); var ticket = superRobot.Store(new Bag()); Assert.IsNotNull(ticket); Assert.IsFalse(cabinet2.HasEmptyBox()); }
public void should_select_the_highest_vacancy_rate_locker_when_store_bag() { var locker1 = new Locker(3); var locker2 = new Locker(2); var superRobot = new SuperRobot( new List <IBagKeeper> { locker1, locker2 }); locker1.Store(new Bag()); var bag = new Bag(); Ticket ticket = superRobot.Store(bag); Assert.AreSame(bag, locker2.Pick(ticket)); }
public void should_pick_bag_given_existing_ticket() { 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 expectedBag = new Bag(); var ticket = manager.Store(expectedBag); var actualBag = manager.Pick(ticket); Assert.Equal(expectedBag, actualBag); }
public void test_superrobot_can_store_bag_by_emptyboxrate() { var superRobot = new SuperRobot(); var cabinet1 = new Cabinet(10); var cabinet2 = new Cabinet(8); cabinet1.Store(new Bag()); cabinet1.Store(new Bag()); cabinet1.Store(new Bag()); cabinet2.Store(new Bag()); cabinet2.Store(new Bag()); superRobot.Add(cabinet1); superRobot.Add(cabinet2); superRobot.Store(new Bag()); Assert.AreEqual(5, cabinet2.GetEmptyBoxCount()); }
public void should_pick_bag_given_existing_ticket() { var lockers = new List <Locker> { new Locker(1) }; 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 expectedBag = new Bag(); var ticket = manager.Store(expectedBag); var actualBag = manager.Pick(ticket); Assert.Equal(expectedBag, actualBag); }
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 Init() { superRobot = new SuperRobot(); }
public void should_return_false_given_hasnot_empty_box() { var superRobot = new SuperRobot(); superRobot.Add(new Cabinet(0)); Assert.IsFalse(superRobot.HasEmptyBox()); }
public void should_return_true_given_has_empty_box() { var superRobot = new SuperRobot(); superRobot.Add(new Cabinet(50)); Assert.IsTrue(superRobot.HasEmptyBox()); }