Beispiel #1
0
    def test_execution_multiple_active_states(self):
        """ Test that state behaviour is executed correctly for multiple active
        states. """
        class State1(StateAgent):
            def execute(self, t, dt):
                StateAgent.execute(self, t, dt)
                self.test_execution_value += 5

        class State2(StateAgent):
            def execute(self, t, dt):
                StateAgent.execute(self, t, dt)
                self.test_execution_value += 15

        class State3(StateAgent):
            def execute(self, t, dt):
                StateAgent.execute(self, t, dt)
                self.test_execution_value += 100

        state1 = State1()
        state1.test_execution_value = 10
        state2 = State2()
        state2.test_execution_value = 20
        state3 = State3()
        state3.test_execution_value = 30

        agent = StateAgent([state1, state3, state2],
                           initial=[State1, State2, State3])
        self.assertItemsEqual(agent.active_states, [state1, state2, state3])

        # Execute active states then test that values were updated
        self.assertEqual(state1.test_execution_value, 10)
        self.assertEqual(state2.test_execution_value, 20)
        self.assertEqual(state3.test_execution_value, 30)
        agent.execute(0, 0)
        self.assertEqual(state1.test_execution_value, 15)
        self.assertEqual(state2.test_execution_value, 35)
        self.assertEqual(state3.test_execution_value, 130)
        agent.execute(0, 0)
        self.assertEqual(state1.test_execution_value, 20)
        self.assertEqual(state2.test_execution_value, 50)
        self.assertEqual(state3.test_execution_value, 230)
Beispiel #2
0
    def test_execution(self):
        """ Test that state behaviour is executed for a single active state. """
        class State1(StateAgent):
            def execute(self, t, dt):
                StateAgent.execute(self, t, dt)
                self.test_execution_value += 1

        state1 = State1()
        state1.test_execution_value = 0
        agent = StateAgent([state1], initial=State1)
        self.assertEqual(agent.state_names(), ["State1"])
        self.assertEqual(agent.active_states, [state1])

        # Execute the active state then test that the value was updated
        self.assertEqual(state1.test_execution_value, 0)
        agent.execute(0, 0)
        self.assertEqual(state1.test_execution_value, 1)
        agent.execute(0, 0)
        self.assertEqual(state1.test_execution_value, 2)
        agent.execute(0, 0)
        self.assertEqual(state1.test_execution_value, 3)
Beispiel #3
0
 def execute(self, t, dt):
     StateAgent.execute(self, t, dt)
     self.test_execution_value += 100