def test_execution_no_transitions(self): sm = StateMachineNetwork([State(1)], []) sm.states[1].set_biases([1, 2]) sm.states[1].set_weights([[1, 2], [3, 4]]) next_state, output = sm.activate(1, [5, 10]) self.assertEqual(next_state, 1) self.assertEqual(output, [26, 57])
def test_execution_true_transition(self): sm = StateMachineNetwork([State(1), State(2)], [Transition(1, 2)]) sm.states[1].set_biases([1, 2]) sm.states[1].set_weights([[1, 2], [3, 4]]) sm.transitions[1][0].add_condition(Condition(0, operator.eq, 5)) next_state, output = sm.activate(1, [5, 10]) self.assertEqual(next_state, 2) self.assertEqual(output, [26, 57])
def test_execution_multiple_transitions_all_false(self): sm = StateMachineNetwork( [State(1), State(2), State(3)], [Transition(1, 2), Transition(1, 2)]) sm.states[1].set_biases([1, 2]) sm.states[1].set_weights([[1, 2], [3, 4]]) sm.transitions[1][0].add_condition(Condition(0, operator.eq, 4)) sm.transitions[1][1].add_condition(Condition(1, operator.gt, 10)) next_state, output = sm.activate(1, [5, 10]) self.assertEqual(1, next_state) self.assertEqual(output, [26, 57])