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!"));
        }
Exemple #6
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));
        }
        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);
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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);
        }
Exemple #14
0
        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));
        }
Exemple #21
0
 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());
 }