Exemple #1
0
class EntityTester(RuleBasedStateMachine):
    def __init__(self):
        super(EntityTester, self).__init__()
        self.e = Entity()

    @invariant()
    def event_queue(self):
        assert isinstance(self.e.event_queue, EventQueue)

    def precond_queue_not_empty(self):
        return len(self.e.event_queue.events) > 0

    @rule()
    @precondition(precond_queue_not_empty)
    def receive(self):
        event = self.e.event_queue.pop()
        assert event == self.e.recive()

    @rule(s=text(), o=text())
    def send(self, s, o):
        event = Event(s, o)
        self.e.send(event)
        assert self.e.event_queue.events[-1] == event

    @rule()
    def reset(self):
        self.e = Entity()