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)
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)