def test__build_dict(self, mock_superManager):
        mock_instance = MagicMock()
        mock_superManager.getInstance.return_value = mock_instance
        mock_instance.commonsManager.getFunctionCaller.return_value = 'unittest'
        stateManager = StateManager()

        self.assertIsNone(
            stateManager._buildDict('unit.test.is.awesome', State('awesome')))
        self.assertRaises(StateAlreadyRegistered,
                          stateManager._buildDict,
                          statePath='unit.test.is.awesome',
                          state=State('awesome'))
    def test_all_states(self, mock_superManager):
        mock_instance = MagicMock()
        mock_superManager.getInstance.return_value = mock_instance
        mock_instance.commonsManager.getFunctionCaller.return_value = 'unittest'
        stateManager = StateManager()

        stateManager.register('unit.test.is.awesome')
        stateManager.register('alice.also')

        states = [State('awesome'), State('also')]

        self.assertListEqual(stateManager.allStates(), states)
    def test_set_state(self, mock_superManager):

        dummy = MagicMock()
        dummy.get.return_value = 'unittest'

        mock_instance = MagicMock()
        mock_superManager.getInstance.return_value = mock_instance
        mock_instance.commonsManager.getFunctionCaller.return_value = 'unittest'
        stateManager = StateManager()

        mockState = State('awesome')

        stateManager.register('unit.test.is.awesome')
        state = stateManager.getState('unit.test.is.awesome')
        self.assertEqual(state, mockState)

        state = stateManager.setState('unit.test.is.crappy', StateType.WAITING)
        self.assertEqual(state, False)

        stateManager.setState('unit.test.is.awesome', StateType.WAITING)
        state = stateManager.getState('unit.test.is.awesome')
        self.assertEqual(state.currentState, StateType.WAITING)

        state.subscribe(dummy.get)
        stateManager.setState('unit.test.is.awesome', StateType.STOPPED)
        dummy.get.assert_called_once_with(StateType.WAITING, StateType.STOPPED)
    def test_register(self, mock_superManager):
        mock_instance = MagicMock()
        mock_superManager.getInstance.return_value = mock_instance
        mock_instance.commonsManager.getFunctionCaller.return_value = 'unittest'
        stateManager = StateManager()

        mockState = State('unittest')
        data = {'unittest': mockState}
        self.assertEqual(stateManager.register('unittest'), mockState)
        self.assertDictEqual(data, stateManager.states)
        self.assertIsNone(stateManager.register('unittest'))

        stateManager = StateManager()
        mockState = State('test')
        data = {'unit': {'test': mockState}}
        self.assertEqual(stateManager.register('unit.test'), mockState)
        self.assertDictEqual(data, stateManager.states)
        self.assertIsNone(stateManager.register('unit.test'))
        self.assertIsInstance(stateManager.register('unit.tests'), State)
Example #5
0
    def register(self,
                 statePath: str,
                 initialState: StateType = StateType.BORN) -> Optional[State]:
        """
		Register a new state
		:param statePath: If containing "." it will be distributed as a dict
		:param initialState: sets the initialstate
		:return: State
		"""

        try:
            state = State(statePath.split('.')[-1], initialState)
            self._buildDict(statePath, state)
            return state
        except StateAlreadyRegistered:
            return None
    def test_on_stop(self, mock_superManager):
        mock_instance = MagicMock()
        mock_superManager.getInstance.return_value = mock_instance
        mock_instance.commonsManager.getFunctionCaller.return_value = 'unittest'
        stateManager = StateManager()

        stateManager.register('unit.test.is.awesome')
        stateManager.register('alice.also')

        state1 = State('awesome')
        state2 = State('also')
        mockStates = [state1, state2]

        stateManager.onStop()
        state1.setState(StateType.STOPPED)
        state2.setState(StateType.STOPPED)

        states = stateManager.allStates()
        self.assertListEqual(states, mockStates)