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