예제 #1
0
    def test_SpecifyThatBaseEntityCanBeConstructed(self):
        # arrange
        baseEntity = BaseEntity(self.EntityId)

        # assert
        self.assertEqual(baseEntity.Id, self.EntityId)
        self.assertEqual(baseEntity.EntityType.value, -1)
        self.assertEqual(baseEntity.IsTagged(), False)
예제 #2
0
    def test_SpecifyThatEntityTypeCanBeModify(self):
        # arrange
        baseEntity = BaseEntity(self.EntityId)

        # act
        baseEntity.EntityType = TestEntity.TestEntityOne

        # assert
        self.assertEqual(baseEntity.EntityType, TestEntity.TestEntityOne)
예제 #3
0
    def test_SpecifyThatOnTelegramReturnsFalse(self):
        # arrange
        entity = BaseEntity(self.EntityId)
        state = State()

        # assert
        self.assertFalse(state.OnTelegram(entity, None))
예제 #4
0
    def test_SpecifyThatExecuteThrowsNotImplementedError(self):
        # arrange
        entity = BaseEntity(self.EntityId)
        state = State()

        # assert
        self.assertRaises(NotImplementedError, state.Execute, entity)
예제 #5
0
    def test_SpecifyThatNextValidIdCanBeReset(self):
        newBaseEntity = None

        # arrange
        for i in range(0, 5):
            newBaseEntity = BaseEntity(i)

        # assert
        self.assertEqual(newBaseEntity.Id, 4)
        self.assertEqual(BaseEntity.GetNextValidId(), 5)

        # act
        BaseEntity.ResetNextValidId()

        # assert
        self.assertEqual(BaseEntity.GetNextValidId(), 0)
예제 #6
0
    def test_SpecifyThatExitDoesNotThrowANotImplementedError(self):
        # arrange
        entity = BaseEntity(self.EntityId)
        state = State()

        # assert
        try:
            state.Exit(entity)
        except:
            self.fail('Exit() should not throw an exception')
    def test_SpecifyThatAStateMachineCanBeConstructed(self):
        # arrange
        entity = BaseEntity(self.EntityId)
        stateMachine = StateMachine(entity)

        # assert
        self.assertEqual(stateMachine.Owner, entity)
        self.assertEqual(stateMachine.CurrentState, None)
        self.assertEqual(stateMachine.PreviousState, None)
        self.assertEqual(stateMachine.GlobalState, None)
예제 #8
0
    def test_SpecifyThatTriggersCanBeUpdated(self):
        # arrange
        BaseEntity.ResetNextValidId()
        trigger = Trigger(1)
        trigger.Update = mock.Mock()
        triggerSystem = TriggerSystem()
        triggerSystem.Register(trigger)

        # act
        triggerSystem.UpdateTriggers()

        # assert
        trigger.Update.assert_called()
예제 #9
0
    def test_SpecifyThatTagCanBeSetAndCleared(self):
        # arrange
        baseEntity = BaseEntity(self.EntityId)

        # assert
        self.assertEqual(baseEntity.IsTagged(), False)

        baseEntity.Tag()
        self.assertEqual(baseEntity.IsTagged(), True)

        baseEntity.UnTag()
        self.assertEqual(baseEntity.IsTagged(), False)
예제 #10
0
    def test_SpecifyThatTriggersCanBeRegisteredAndCleared(self):
        BaseEntity.ResetNextValidId()
        triggerSystem = TriggerSystem()

        self.assertEqual(0, len(triggerSystem.GetTriggers()), "len 1")

        triggerSystem.Register(Trigger(1))
        triggerSystem.Register(Trigger(2))

        self.assertEqual(2, len(triggerSystem.GetTriggers()), "len 2")

        triggerSystem.Clear()

        self.assertEqual(0, len(triggerSystem.GetTriggers()), "len 3")
    def test_SpecifyThatEntityEngineCanBeConstructed(self):

        # Ensure that all singletons are reset
        self.assertEqual(0, BaseEntity.GetNextValidId(), "GetNextValidId 1")
        self.assertEqual({}, EntityManager._getEntityMap(), "_getEntityMap 1")
        self.assertEqual(True,
                         TelegramDispatcher().PriorityQ.IsEmpty(),
                         "PriorityQ 1")

        # Create the engine
        entityEngine = self.CreateTestEntityEngine()

        # Get references to objects under test
        entityMap = EntityManager._getEntityMap()
        actionMap = entityEngine._actionMap
        entityOne = entityMap[0]
        entityTwo = entityMap[1]

        # Assert singletons
        self.assertEqual(True,
                         TelegramDispatcher().PriorityQ.IsEmpty(),
                         "PriorityQ 2")

        # Assert entityMap
        self.assertEqual(2, len(entityMap), "len(entityMap)")
        self.assertEqual("TestEntityOne",
                         type(entityMap[0]).__name__, "entityMap[0]")
        self.assertEqual("TestEntityTwo",
                         type(entityMap[1]).__name__, "entityMap[1]")
        self.assertEqual(0, entityMap[0].Id, "entityMap[0].Id")
        self.assertEqual(1, entityMap[1].Id, "entityMap[1].Id")

        # Assert actionMap
        self.assertEqual(4, len(actionMap), "len(actionMap)")
        self.assertEqual("ActionOn", list(actionMap.keys())[0], "key 0")
        self.assertEqual("ActionOff", list(actionMap.keys())[1], "key 1")
        self.assertEqual("ActionEnable", list(actionMap.keys())[2], "key 2")
        self.assertEqual("ActionDisable", list(actionMap.keys())[3], "key 3")
        self.assertEqual(actionMap['ActionOn']['FunctionToExecute'],
                         entityOne.ActionOn)
        self.assertEqual(actionMap['ActionOff']['FunctionToExecute'],
                         entityOne.ActionOff)
        self.assertEqual(actionMap['ActionEnable']['FunctionToExecute'],
                         entityTwo.ActionEnable)
        self.assertEqual(actionMap['ActionDisable']['FunctionToExecute'],
                         entityTwo.ActionDisable)
예제 #12
0
    def __init__(self, firestoreClient, entities):

        self._firestoreClient = firestoreClient
        self._entities = entities
        self._actionMap = {}

        BaseEntity.ResetNextValidId()
        TelegramDispatcher().Clear()

        for entity in self._entities:
            EntityManager.RegisterEntity(entity)
            self._actionMap.update(entity.ActionMap)

        transactionsRef = self._firestoreClient \
            .collection(DIALOG_FLOW_TRANSACTIONS_URL) \
            .where('status', '==', 'UNPROCESSED')

        self._transactionListener = transactionsRef.on_snapshot(self._processRequests)
예제 #13
0
    def test_SpecifyThatUpdateThrowsNotImplementedError(self):
        # arrange
        baseEntity = BaseEntity(self.EntityId)

        # assert
        self.assertRaises(NotImplementedError, baseEntity.Update)
    def __init__(self, lifeTimeInNumberOfUpdates):
        super().__init__(BaseEntity.GetNextValidId())

        # the lifetime of this trigger in update-steps
        self._lifetime = lifeTimeInNumberOfUpdates
예제 #15
0
 def CreateTriggerLimitedLifetime():
     BaseEntity.ResetNextValidId()
     return TriggerLimitedLifetime(10)
 def tearDown(self):
     EntityManager.Reset()
     BaseEntity.ResetNextValidId()
     TelegramDispatcher().Clear()
예제 #17
0
    def test_SpecifyThatHandleMessageThrowsNotImplementedError(self):
        # arrange
        baseEntity = BaseEntity(self.EntityId)

        # assert
        self.assertRaises(NotImplementedError, baseEntity.HandleTelegram, None)
예제 #18
0
    def test_SpecifyThatActionMapThrowsNotImplementedError(self):
        # arrange
        baseEntity = BaseEntity(self.EntityId)

        # assert
        self.assertRaises(NotImplementedError, lambda: baseEntity.ActionMap)
예제 #19
0
 def CreateTestBot():
     BaseEntity.ResetNextValidId()
     return TestBot(1)
 def tearDown(self):
     EntityManager.Reset()
     BaseEntity.ResetNextValidId()
예제 #21
0
 def tearDown(self):
     BaseEntity.ResetNextValidId()
    def CreateStateMachine(self):
        BaseEntity.ResetNextValidId()
        entity = BaseEntity(self.EntityId)
        stateMachine = StateMachine(entity)

        return stateMachine
예제 #23
0
 def CreateUser():
     BaseEntity.ResetNextValidId()
     return User(entityId=1)
예제 #24
0
 def CreateTestTrigger():
     BaseEntity.ResetNextValidId()
     return Trigger(1)
 def CreateTriggerRespawning():
     BaseEntity.ResetNextValidId()
     triggerRespawning = TriggerRespawning(1)
     triggerRespawning.SetRespawnDelay(10)
     return triggerRespawning