Example #1
0
 def test_build_valid__predefine__user_defined(self):
     speech = OptimizedSpeech.build('1234', '098', 'Charge is low.',
                                    '5% remaining.')
     expect = OptimizedSpeech('1234', '098', 'Status',
                              'Going offline and into storage.',
                              ['Charge is low.', '5% remaining.'])
     self.assertEqual(speech, expect)
Example #2
0
 def test_build_valid__user_defined(self):
     speech = OptimizedSpeech.build(
         '1234', '050', 'This drone is ready to obey, Hive Mxtress.')
     expect = OptimizedSpeech(
         '1234', '050', 'Statement', None,
         ['This drone is ready to obey, Hive Mxtress.'])
     self.assertEqual(speech, expect)
Example #3
0
        class TestPattern(ResponsePattern):
            response = [
                OptimizedSpeech.build('1234', '210'),
                OptimizedSpeech.build('1234', '123')
            ]

            @Ev.ON_MESSAGE('122')
            def pattern122(self, request: OptimizedSpeech):
                return self.response
Example #4
0
    def test_2_decorators_2(self):
        class TestPattern(ResponsePattern):
            response = OptimizedSpeech.build('1234', '123')

            @Ev.ON_MESSAGE('122', '123')
            def patterns(self, request: OptimizedSpeech):
                return self.response

        pattern = TestPattern()

        expected = pattern.response
        actual = pattern(OptimizedSpeech.build('1111', '122'))
        self.assertEqual(expected, actual)

        expected = pattern.response
        actual = pattern(OptimizedSpeech.build('1111', '123'))
        self.assertEqual(expected, actual)
Example #5
0
    def test_repr_eval(self):
        speech = OptimizedSpeech(
            '1234', '050', 'Statement', None,
            ['This drone is ready to obey, Hive Mxtress.'])
        string = repr(speech)
        reconstructed = eval(string)

        expect = "OptimizedSpeech('1234', '050', 'Statement', None, ['This drone is ready to obey, Hive Mxtress.'])"
        self.assertEqual(string, expect)
        self.assertEqual(reconstructed, speech)
Example #6
0
    def test_valid(self):
        speech = '1234 :: Code 050 :: Statement'
        parsed = OptimizedSpeech.parse(speech)

        self.assertEqual(parsed.drone_id, '1234')
        self.assertEqual(parsed.status_code, '050')
        self.assertEqual(parsed.status_message, 'Statement')
        self.assertEqual(parsed.predefined_message, None)
        self.assertEqual(parsed.user_defined_messages, [])

        self.assertEqual(str(parsed), speech)
Example #7
0
        class TestPattern(ResponsePattern):
            response = OptimizedSpeech.build('1234', '109')

            @Ev.ON_MESSAGE('122')
            def pattern122(self, request: OptimizedSpeech):
                err = 1 / 0
                return OptimizedSpeech.build('1234', '123')

            @Ev.ON_ERROR
            def error(self, error):
                return self.response
Example #8
0
    def test_valid__predefine(self):
        speech = '1234 :: Code 098 :: Status :: Going offline and into storage.'
        parsed = OptimizedSpeech.parse(speech)

        self.assertEqual(parsed.drone_id, '1234')
        self.assertEqual(parsed.status_code, '098')
        self.assertEqual(parsed.status_message, 'Status')
        self.assertEqual(parsed.predefined_message,
                         'Going offline and into storage.')
        self.assertEqual(parsed.user_defined_messages, [])

        self.assertEqual(str(parsed), speech)
Example #9
0
    def test_valid__user_defined(self):
        speech = '1234 :: Code 050 :: Statement :: This drone is ready to obey, Hive Mxtress.'
        parsed = OptimizedSpeech.parse(speech)

        self.assertEqual(parsed.drone_id, '1234')
        self.assertEqual(parsed.status_code, '050')
        self.assertEqual(parsed.status_message, 'Statement')
        self.assertEqual(parsed.predefined_message, None)
        self.assertEqual(parsed.user_defined_messages,
                         ['This drone is ready to obey, Hive Mxtress.'])

        self.assertEqual(str(parsed), speech)
Example #10
0
    def test_on_unregistered_message(self):
        class TestPattern(ResponsePattern):
            response = OptimizedSpeech.build('1234', '400')

            @Ev.ON_UNREGISTERED
            def unregistered(self, request: OptimizedSpeech):
                return self.response

        pattern = TestPattern()

        expected = pattern.response
        actual = pattern(OptimizedSpeech.build('1111', '050'))
        self.assertEqual(expected, actual)
Example #11
0
    def test_no_return(self):
        class TestPattern(ResponsePattern):
            response = None

            @Ev.ON_MESSAGE('000')
            def pattern000(self, request: OptimizedSpeech):
                return self.response

        pattern = TestPattern()

        expected = pattern.response
        actual = pattern(OptimizedSpeech.build('1234', '000'))
        self.assertEqual(expected, actual)
Example #12
0
    def test_multi_returns(self):
        class TestPattern(ResponsePattern):
            response = [
                OptimizedSpeech.build('1234', '210'),
                OptimizedSpeech.build('1234', '123')
            ]

            @Ev.ON_MESSAGE('122')
            def pattern122(self, request: OptimizedSpeech):
                return self.response

        pattern = TestPattern()

        expected = pattern.response
        actual = pattern(OptimizedSpeech.build('1111', '122'))
        self.assertEqual(expected, actual)
Example #13
0
    def test_valid__short_hand(self):
        speech1 = '1234 :: Code 098 :: Charge is low.'
        speech2 = '1234 :: Code 098 :: Status :: Charge is low.'
        speech3 = '1234 :: Code 098 :: Going offline and into storage. :: Charge is low.'

        for speech in [speech1, speech2, speech3]:
            parsed = OptimizedSpeech.parse(speech)

            self.assertEqual(parsed.drone_id, '1234')
            self.assertEqual(parsed.status_code, '098')
            self.assertEqual(parsed.status_message, 'Status')
            self.assertEqual(parsed.predefined_message,
                             'Going offline and into storage.')
            self.assertEqual(parsed.user_defined_messages, ['Charge is low.'])

            expect = '1234 :: Code 098 :: Status :: Going offline and into storage. :: Charge is low.'
            self.assertEqual(str(parsed), expect)
Example #14
0
    def test_on_error_message(self):
        class TestPattern(ResponsePattern):
            response = OptimizedSpeech.build('1234', '109')

            @Ev.ON_MESSAGE('122')
            def pattern122(self, request: OptimizedSpeech):
                err = 1 / 0
                return OptimizedSpeech.build('1234', '123')

            @Ev.ON_ERROR
            def error(self, error):
                return self.response

        pattern = TestPattern()

        expected = pattern.response
        actual = pattern(OptimizedSpeech.build('1111', '122'))
        self.assertEqual(expected, actual)
Example #15
0
 def test_equality(self):
     x = OptimizedSpeech('1111', '107', 'Please continue.', None,
                         ['Drone is drone.'])
     a = OptimizedSpeech('1111', '107', 'Please continue.', None,
                         ['Drone is drone.'])
     b = OptimizedSpeech('1112', '107', 'Please continue.', None,
                         ['Drone is drone.'])
     c = OptimizedSpeech('1111', '108', 'Please continue.', None,
                         ['Drone is drone.'])
     d = OptimizedSpeech('1111', '107', 'please continue.', None,
                         ['Drone is drone.'])
     e = OptimizedSpeech('1111', '107', 'Please continue.', 'message',
                         ['Drone is drone.'])
     f = OptimizedSpeech('1111', '107', 'Please continue.', None,
                         ['drone is drone.'])
     self.assertEqual(x, a)
     self.assertNotEqual(x, b)
     self.assertNotEqual(x, c)
     self.assertNotEqual(x, d)
     self.assertNotEqual(x, e)
     self.assertNotEqual(x, f)
Example #16
0
    def test_call_with_args(self):
        class TestPattern(ResponsePattern):
            @Ev.ON_MESSAGE('050')
            def pattern050(self, request: OptimizedSpeech, now: str):
                if 'error' in request.user_defined_messages:
                    raise ValueError()
                return OptimizedSpeech.build('1234', '050', now)

            @Ev.ON_UNREGISTERED
            def unregistered(self, request: OptimizedSpeech, now: str):
                return OptimizedSpeech.build('1234', '400', now)

            @Ev.ON_ERROR
            def error(self, error: BaseException, now: str):
                return OptimizedSpeech.build('1234', '109', now)

        pattern = TestPattern()
        from datetime import datetime

        now = datetime.now().strftime('%H:%M:%S')
        request = OptimizedSpeech.build('1111', '050')
        expected = OptimizedSpeech.build('1234', '050', now)
        actual = pattern(request, now=now)
        self.assertEqual(expected, actual)

        now = datetime.now().strftime('%H:%M:%S')
        request = OptimizedSpeech.build('1111', '050', 'error')
        expected = OptimizedSpeech.build('1234', '109', now)
        actual = pattern(request, now=now)
        self.assertEqual(expected, actual)

        now = datetime.now().strftime('%H:%M:%S')
        request = OptimizedSpeech.build('1111', '105', 'error')
        expected = OptimizedSpeech.build('1234', '400', now)
        actual = pattern(request, now=now)
        self.assertEqual(expected, actual)
 def _build_message(self, status_code: str, *message: str):
     return OptimizedSpeech.build(self.drone_id, status_code, *message)
Example #18
0
 def pattern050(self, request: OptimizedSpeech, now: str):
     if 'error' in request.user_defined_messages:
         raise ValueError()
     return OptimizedSpeech.build('1234', '050', now)
Example #19
0
 def unregistered(self, request: OptimizedSpeech, now: str):
     return OptimizedSpeech.build('1234', '400', now)
Example #20
0
 def error(self, error: BaseException, now: str):
     return OptimizedSpeech.build('1234', '109', now)
Example #21
0
 def test_build_invalid__status_code(self):
     speech = OptimizedSpeech.build('1234', '999')
     self.assertIsNone(speech)
Example #22
0
        class TestPattern(ResponsePattern):
            response = OptimizedSpeech.build('1234', '400')

            @Ev.ON_INVALID
            def invalid(self, request: str):
                return self.response
Example #23
0
        class TestPattern(ResponsePattern):
            response = OptimizedSpeech.build('1234', '400')

            @Ev.ON_UNREGISTERED
            def unregistered(self, request: OptimizedSpeech):
                return self.response
Example #24
0
 def test_build_valid__predefined(self):
     speech = OptimizedSpeech.build('1234', '304')
     expect = OptimizedSpeech('1234', '304', 'Mantra',
                              'It obeys the Hive Mxtress.', [])
     self.assertEqual(speech, expect)
Example #25
0
 def test_build_valid(self):
     speech = OptimizedSpeech.build('1234', '050')
     expect = OptimizedSpeech('1234', '050', 'Statement', None, [])
     self.assertEqual(speech, expect)
Example #26
0
 def test_invalid__colon(self):
     speech = '12345 : Code 050 : Statement : This drone is ready to obey, Hive Mxtress.'
     parsed = OptimizedSpeech.parse(speech)
     self.assertIsNone(parsed)
Example #27
0
 def test_invalid__status_code_format(self):
     speech = '1234 :: Code 0050 :: Statement :: This drone is ready to obey, Hive Mxtress.'
     parsed = OptimizedSpeech.parse(speech)
     self.assertIsNone(parsed)
Example #28
0
 def pattern122(self, request: OptimizedSpeech):
     err = 1 / 0
     return OptimizedSpeech.build('1234', '123')