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)
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)
class TestPattern(ResponsePattern): response = [ OptimizedSpeech.build('1234', '210'), OptimizedSpeech.build('1234', '123') ] @Ev.ON_MESSAGE('122') def pattern122(self, request: OptimizedSpeech): return self.response
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)
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)
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)
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
def pattern050(self, request: OptimizedSpeech, now: str): if 'error' in request.user_defined_messages: raise ValueError() return OptimizedSpeech.build('1234', '050', now)
def unregistered(self, request: OptimizedSpeech, now: str): return OptimizedSpeech.build('1234', '400', now)
def error(self, error: BaseException, now: str): return OptimizedSpeech.build('1234', '109', now)
def test_build_invalid__status_code(self): speech = OptimizedSpeech.build('1234', '999') self.assertIsNone(speech)
class TestPattern(ResponsePattern): response = OptimizedSpeech.build('1234', '400') @Ev.ON_INVALID def invalid(self, request: str): return self.response
class TestPattern(ResponsePattern): response = OptimizedSpeech.build('1234', '400') @Ev.ON_UNREGISTERED def unregistered(self, request: OptimizedSpeech): return self.response
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)
def test_build_valid(self): speech = OptimizedSpeech.build('1234', '050') expect = OptimizedSpeech('1234', '050', 'Statement', None, []) self.assertEqual(speech, expect)
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)
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)
def pattern122(self, request: OptimizedSpeech): err = 1 / 0 return OptimizedSpeech.build('1234', '123')