def test_encode_dynamic_primitive_automatically(self): tmp = MessageTemplate('Dymagic', self._protocol, {}) tmp.add(UInt(4, 'len', None)) tmp.add(Char('len', 'chars', 'abcd')) encoded = tmp.encode({}, {}) self.assertEqual(encoded.chars.ascii, 'abcd') self.assertEqual(encoded.len.int, 4)
def setUp(self): self._protocol = Protocol('TestProtocol', little_endian=True) self._protocol.add(UInt(2, 'msgId', 5)) self._protocol.add(UInt(2, 'length', None)) self._protocol.add(PDU('length-4')) self.tmp = MessageTemplate('FooRequest', self._protocol, {}) self.tmp.add(UInt(2, 'field_1', '0xcafe')) self.tmp.add(UInt(2, 'field_2', '0xbabe'))
def setUp(self): self._protocol = Protocol('TestProtocol') self._protocol.add(UInt(2, 'msgId', 5)) self._protocol.add(UInt(2, 'length', None)) self._protocol.add(PDU('length-4')) self.tmp = MessageTemplate('FooRequest', self._protocol, {}) self.tmp.add(UInt(2, 'field_1', 1)) self.tmp.add(UInt(2, 'field_2', 2))
def test_encode_dynamic_list(self): tmp = MessageTemplate('Dymagic', self._protocol, {}) tmp.add(UInt(2, 'len', None)) lst = ListTemplate('len', 'foo', parent=None) lst.add(UInt(1, 'bar', 1)) tmp.add(lst) encoded = tmp.encode({'len': 6}, {}) self.assertEqual(len(encoded.foo), 6)
def setUp(self): self._protocol = Protocol('TestProtocol') self._protocol.add(UInt(2, 'msgId', 5)) self._protocol.add(UInt(2, 'length', None)) self._protocol.add(PDU('length-4')) self.tmp = MessageTemplate('FooRequest', self._protocol, {}) self.tmp.add(UInt(2, 'field_1', '0xcafe')) self.tmp.add(UInt(2, 'field_2', '0xbabe')) self.example = self.tmp.encode({}, {})
def test_decode_dynamic_list(self): tmp = MessageTemplate('Dymagic', self._protocol, {}) tmp.add(UInt(2, 'len', None)) lst = ListTemplate('len', 'foo', parent=None) lst.add(UInt(1, 'bar', None)) tmp.add(lst) decoded = tmp.decode(to_bin('0x 00 04 6162 6364')) self.assertEqual(decoded.len.int, 4) self.assertEqual(decoded.foo[0].hex, '0x61')
def test_access_struct(self): self._protocol = Protocol('TestProtocol') self._protocol.add(UInt(2, 'msgId', 5)) self._protocol.add(UInt(2, 'length', None)) self._protocol.add(PDU('length-4')) self.tmp = MessageTemplate('StructuredRequest', self._protocol, {}) struct = get_pair() self.tmp.add(struct) msg = self.tmp.encode({}, {}) self.assertEquals(msg.pair.first.int, 1)
def test_decode_dynamic_primitive(self): tmp = MessageTemplate('Dymagic', self._protocol, {}) tmp.add(UInt(1, 'len', None)) tmp.add(Char('len', 'chars', None)) tmp.add(UInt(1, 'len2', None)) tmp.add(Char('len2', 'chars2', None)) decoded = tmp.decode(to_bin('0x 04 6162 6364 02 6566')) self.assertEqual(decoded.len.int, 4) self.assertEqual(decoded.chars.ascii, 'abcd') self.assertEqual(decoded.chars2.ascii, 'ef')
def test_encode_dynamic_primitive_with_defined_value(self): tmp = MessageTemplate('Dymagic', self._protocol, {}) tmp.add(UInt(4, 'len', '4')) tmp.add(Char('len', 'chars', 'abcd')) tmp.add(UInt(4, 'len2', None)) tmp.add(Char('len2', 'chars2', 'ef')) encoded = tmp.encode({'len2': '6'}, {}) self.assertEqual(encoded.chars.ascii, 'abcd') self.assertEqual(len(encoded.chars), 4) self.assertEqual(encoded.chars2.ascii, 'ef') self.assertEqual(len(encoded.chars2), 6)
def test_add_field_with_length_reference_missing(self): tmp = MessageTemplate('Dymagic', self._protocol, {}) tmp.add(UInt(2, 'len', None)) str = StructTemplate('FooType', 'foo', tmp) self.assertRaises(AssertionError, str.add, Char('notfound', "bar"))
def test_add_field_with_length_reference_to_parent(self): tmp = MessageTemplate('Dymagic', self._protocol, {}) tmp.add(UInt(2, 'len', None)) str = StructTemplate('FooType', 'foo', tmp) str.add(Char('len', "bar"))
def test_non_existing_dynamic_list_variable(self): tmp = MessageTemplate('Dymagic', self._protocol, {}) lst = ListTemplate('not_existing', 'foo', parent=None) lst.add(UInt(1, 'bar', None)) self.assertRaises(Exception, tmp.add, lst)
def test_non_existing_dynamic_variable(self): tmp = MessageTemplate('Dymagic', self._protocol, {}) self.assertRaises(Exception, tmp.add, Char('not_existing', 'foo', None))