Example #1
0
    def test_init(self):

        logging.info("***** init")

        sequence = Sequence(
            machines=[self.stopped_1, self.stopped_2, self.stopped_3])
        self.assertEqual(len(sequence.machines), 3)
Example #2
0
    def test_is_running(self):

        logging.info("***** is_running")

        sequence = Sequence(
            machines=[self.stopped_1, self.stopped_2, self.stopped_3])
        self.assertFalse(sequence.is_running)
Example #3
0
    def test_stop(self):

        logging.info("***** stop")

        sequence = Sequence(
            machines=[self.stopped_1, self.running_1, self.stopped_2])
        process = sequence.start()

        while sequence.machines[0].mutables.get('started') != True:
            time.sleep(0.001)
        while sequence.machines[0].mutables.get('ran') != True:
            time.sleep(0.001)
        while sequence.machines[1].mutables.get('started') != True:
            time.sleep(0.001)
        while sequence.machines[1].mutables.get('ran') != True:
            time.sleep(0.001)
        self.assertFalse(sequence.machines[1].mutables.get('stopped'))
        self.assertFalse(sequence.machines[2].mutables.get('started'))
        self.assertFalse(sequence.machines[2].mutables.get('ran'))

        sequence.stop()
        process.join()

        self.assertTrue(sequence.machines[0].mutables.get('started'))
        self.assertTrue(sequence.machines[0].mutables.get('ran'))
        self.assertTrue(sequence.machines[1].mutables.get('started'))
        self.assertTrue(sequence.machines[1].mutables.get('ran'))
        self.assertTrue(sequence.machines[1].mutables.get('stopped'))
        self.assertFalse(sequence.machines[2].mutables.get('started'))
        self.assertFalse(sequence.machines[2].mutables.get('ran'))
Example #4
0
    def test_reset(self):

        logging.info("***** reset")

        sequence = Sequence(
            machines=[self.stopped_1, self.stopped_2, self.stopped_3])
        self.assertTrue(sequence.reset())
        self.assertTrue(sequence.machines[0].mutables.get('reset'))
        self.assertTrue(sequence.machines[1].mutables.get('reset'))
        self.assertTrue(sequence.machines[2].mutables.get('reset'))
Example #5
0
    def test_run(self):

        logging.info("***** run")

        sequence = Sequence(
            machines=[self.stopped_1, self.stopped_2, self.stopped_3])
        sequence.run()
        self.assertTrue(sequence.machines[0].mutables.get('started'))
        self.assertTrue(sequence.machines[0].mutables.get('ran'))
        self.assertTrue(sequence.machines[1].mutables.get('started'))
        self.assertTrue(sequence.machines[1].mutables.get('ran'))
        self.assertTrue(sequence.machines[2].mutables.get('started'))
        self.assertTrue(sequence.machines[2].mutables.get('ran'))
Example #6
0
    def test_start(self):

        logging.info("***** start")

        sequence = Sequence(
            machines=[self.stopped_1, self.stopped_2, self.stopped_3])
        process = sequence.start()
        process.join()
        self.assertTrue(sequence.machines[0].mutables.get('started'))
        self.assertTrue(sequence.machines[0].mutables.get('ran'))
        self.assertTrue(sequence.machines[1].mutables.get('started'))
        self.assertTrue(sequence.machines[1].mutables.get('ran'))
        self.assertTrue(sequence.machines[2].mutables.get('started'))
        self.assertTrue(sequence.machines[2].mutables.get('ran'))
Example #7
0
    def test_getter(self):

        logging.info("***** get and set")

        sequence = Sequence(
            machines=[self.stopped_1, self.stopped_2, self.stopped_3])

        # undefined key
        self.assertEqual(sequence.get('hello'), None)

        # undefined key with default value
        whatever = 'whatever'
        self.assertEqual(sequence.get('hello', whatever), whatever)

        # set the key
        sequence.set('hello', 'world')
        self.assertEqual(sequence.get('hello'), 'world')

        # default value is meaningless when key has been set
        self.assertEqual(sequence.get('hello', 'whatever'), 'world')

        # except when set to None
        sequence.set('special', None)
        self.assertEqual(sequence.get('special', []), [])
Example #8
0
if __name__ == '__main__':

    Context.set_logger()

    engine = Engine(type='local', command='shellbot.commands.input')
    engine.configure()  # ensure that all components are ready

    bot = engine.get_bot()  # get generic group channel for this bot

    order_id = Input(  # use a mask to validate input
        bot=bot,
        question="PO number please?",
        mask="9999A",
        on_answer="Ok, PO number has been noted: {}",
        on_retry="PO number should have 4 digits and a letter",
        on_cancel="Ok, forget about the PO number",
        key='order.id')

    description = Input(  # free form
        bot=bot,
        question="Issue description please?",
        on_answer="Ok, description noted: {}",
        on_retry="Please enter a one-line description of the issue",
        on_cancel="Ok, forget about the description",
        key='description')

    sequence = Sequence(machines=[order_id, description])
    sequence.start()

    engine.run()  # until Ctl-C