def test_raise_exception_invalid_version(self): rawbuf = FRAME_HEAD_FMT.pack(CONST.RCMP_STARTFLAG, 0xFF, 0) with self.assertRaises(EXP.RCException) as exp: RCMPFrame.parse(rawbuf) self.assertEqual(ERR.ERROR_UNSUPPORT, exp.exception.errno) self.assertTrue('unsupport version: ' in exp.exception.errmsg)
def test_raise_exception_need_more_data_wait_head(self): rawbuf = bytes('abc', 'utf-8') with self.assertRaises(EXP.RCException_More_Data) as exp: RCMPFrame.parse(rawbuf) self.assertEqual(ERR.ERROR, exp.exception.errno) self.assertEqual('need more data', exp.exception.errmsg)
def test_raise_exception_invalid_start_flag(self): rawbuf = FRAME_HEAD_FMT.pack(0x00, CONST.RCMP_VERSION, 0) with self.assertRaises(EXP.RCException) as exp: RCMPFrame.parse(rawbuf) self.assertEqual(ERR.ERROR_INVALID, exp.exception.errno) self.assertEqual('invalid Start Flag', exp.exception.errmsg)
def test_raise_exception_payload_too_large(self): rawbuf = FRAME_HEAD_FMT.pack(CONST.RCMP_STARTFLAG, CONST.RCMP_VERSION, 0x10000 - CONST.RCMP_FRAMEHEADSIZE + 1) with self.assertRaises(EXP.RCException) as exp: RCMPFrame.parse(rawbuf) self.assertEqual(ERR.ERROR_INVALID, exp.exception.errno) self.assertEqual('payload too large', exp.exception.errmsg)
def test_raise_exception_need_more_data_wait_payload(self): rawbuf = FRAME_HEAD_FMT.pack(CONST.RCMP_STARTFLAG, CONST.RCMP_VERSION, 1) with self.assertRaises(EXP.RCException_More_Data) as exp: RCMPFrame.parse(rawbuf) self.assertEqual(ERR.ERROR, exp.exception.errno) self.assertEqual('need more data', exp.exception.errmsg)
def test_parse(self): payload_str, frame_length = RCMPFrame.parse(FRAME) payload = json.loads(payload_str) self.assertEqual(CONST.RCMP_FRAMEHEADSIZE + len(PAYLOAD_STR), frame_length) self.assertEqual(ordered(PAYLOAD), ordered(payload))
def test_encode_and_parse(self): frame = RCMPFrame.encode(PAYLOAD_STR) payload_str, frame_length = RCMPFrame.parse(frame) payloadObj = json.loads(payload_str) self.assertEqual(CONST.RCMP_FRAMEHEADSIZE + len(PAYLOAD_STR), frame_length) self.assertEqual(ordered(PAYLOAD), ordered(payloadObj))
def test_parse_no_payload(self): payload_str, frame_length = RCMPFrame.parse(FRAME_NO_PAYLOAD) self.assertEqual(CONST.RCMP_FRAMEHEADSIZE, frame_length) self.assertEqual(None, payload_str)
def test_encode_and_parse_no_payload(self): frame = RCMPFrame.encode(None) payload_str, frame_length = RCMPFrame.parse(frame) self.assertEqual(CONST.RCMP_FRAMEHEADSIZE, frame_length) self.assertEqual(None, payload_str)