Example #1
0
 def setUp(self):
     self.x = Node('x')
     self.y = Node('y')
     self.z = Node('z')
     self.route = [self.y, self.z]
     self.agentId = 1
     self.agent = GroupMoveAgent(self.agentId, self.route)
     self.agent1 = GroupMoveAgent(self.agentId, self.route)
     self.agent2 = GroupMoveAgent(self.agentId, self.route)
     self.agents = [self.agent1, self.agent2]
     self.agent.setAgents(self.agents)
Example #2
0
class TestGroupMoveAgent(TestCase):
    def setUp(self):
        self.x = Node('x')
        self.y = Node('y')
        self.z = Node('z')
        self.route = [self.y, self.z]
        self.agentId = 1
        self.agent = GroupMoveAgent(self.agentId, self.route)
        self.agent1 = GroupMoveAgent(self.agentId, self.route)
        self.agent2 = GroupMoveAgent(self.agentId, self.route)
        self.agents = [self.agent1, self.agent2]
        self.agent.setAgents(self.agents)

    def test_init(self):
        agent = GroupMoveAgent(self.agentId, self.route)
        self.assertEqual(self.agentId, agent.id)
        self.assertEqual(self.route, agent.route)
        self.assertEqual(set(), agent.agents)
        self.assertEqual(set(), agent.waitingFor)

    def test_setAgents(self):
        self.assertEqual(self.agents, self.agent.agents)

    def test_tickWaitingForEmpty(self):
        messages, cmd = self.agent.tick([], self.x)
        self.checkMoveReturn(messages, cmd)

    def test_tickWaitingToMove(self):
        self.agent.tick([], self.x)
        messages, cmd = self.agent.tick([], self.x)
        self.checkMoveReturn(messages, cmd)

    def test_tickMoved(self):
        self.agent.tick([], self.x)

        messages, cmd = self.agent.tick([], self.y)

        self.checkBMovedWaitReturn(messages, cmd, self.y)

    def test_tickWaiting(self):
        self.agent.tick([], self.x)
        self.agent.tick([], self.y)

        messages, cmd = self.agent.tick([], self.y)

        self.assertEqual([], messages)
        self.checkWaitReturn(cmd)

    def test_tickFinishedRoute(self):
        self.agent.tick([], self.x)
        self.agent.tick([], self.y)

        messages, cmd = self.agent.tick([], self.z)

        self.checkBMovedWaitReturn(messages, cmd, self.z)

        messages, cmd = self.agent.tick([], self.z)

        self.assertEqual([], messages)
        self.assertIsInstance(cmd, Done)
        self.assertEqual(cmd.agent, self.agent)


    def checkMoveReturn(self, messages, cmd):
        self.assertListEqual([], messages)
        self.assertIsInstance(cmd, Move)
        self.assertEqual(cmd.agent, self.agent)
        self.assertEqual(cmd.to, self.y)

    def checkBMovedWaitReturn(self, messages, cmd, region):
        self.checkWaitReturn(cmd)

        bMoved = messages[0]
        self.assertIsInstance(bMoved, BroadcastMoved)
        self.assertEqual(bMoved.frmAgent, self.agent)
        self.assertEqual(bMoved.toRegion, region)

    def checkWaitReturn(self, cmd):
        self.assertIsInstance(cmd, Wait)
        self.assertEqual(cmd.agent, self.agent)