Exemplo n.º 1
0
 def test_decode_example_3(self):
     input_data = b'\x01\x15\x01\x10e\xad\x8b\xe8\xb3fD\xcb\xbde#\xccc\n\xb8\xef\x02\x01\x01'
     structure = {
         1: {
             1: tlv8.DataType.BYTES,
             2: tlv8.DataType.INTEGER,
         },
         2: {
             1: tlv8.DataType.INTEGER,
             2: tlv8.DataType.BYTES,
             3: tlv8.DataType.BYTES,
             4: tlv8.DataType.BYTES
         },
         3: {
             1: tlv8.DataType.INTEGER,
             2: tlv8.DataType.INTEGER,
             3: tlv8.DataType.INTEGER,
             4: tlv8.DataType.INTEGER,
             5: tlv8.DataType.INTEGER
         }
     }
     result = tlv8.decode(input_data, structure)
     expected = tlv8.EntryList([
         tlv8.Entry(1, tlv8.EntryList([
             tlv8.Entry(1, b'e\xad\x8b\xe8\xb3fD\xcb\xbde#\xccc\n\xb8\xef'),
             tlv8.Entry(2, 1),
         ])),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 2
0
 def test_entrylist_by_id(self):
     el = tlv8.EntryList([
         tlv8.Entry(2, b'\x23'),
         tlv8.Entry(2, b'\x42')
     ])
     self.assertEqual(el.by_id(1), tlv8.EntryList())
     self.assertEqual(el.by_id(2), el)
Exemplo n.º 3
0
    def test_entrylist_init(self):
        with self.assertRaises(ValueError) as error_context:
            tlv8.EntryList('not a list')
        self.assertEqual(str(error_context.exception), 'No valid list: not a list')

        with self.assertRaises(ValueError) as error_context:
            tlv8.EntryList(['not an entry'])
        self.assertEqual(str(error_context.exception), 'Not a valid tlv8.Entry: not an entry')
Exemplo n.º 4
0
 def test_decode_misinterpretation(self):
     """This show how data may be misinterpreted by deep_decode"""
     data = tlv8.encode([tlv8.Entry(1, 16843330), tlv8.Entry(2, b'\x01')])
     result = tlv8.deep_decode(data)
     expected_data = tlv8.EntryList([
         tlv8.Entry(1, tlv8.EntryList([tlv8.Entry(66, b'\x01\x01')])),
         tlv8.Entry(2, b'\x01')
     ])
     self.assertEqual(result, expected_data)
Exemplo n.º 5
0
 def test_decode_4(self):
     input_data = b'\x01\x01\x23\x02\x03\x04\x01\x42\x01\x01\x23'
     result = tlv8.deep_decode(input_data)
     expected = tlv8.EntryList([
         tlv8.Entry(1, b'#'),
         tlv8.Entry(2, tlv8.EntryList([
             tlv8.Entry(4, b'B'),
         ])),
         tlv8.Entry(1, b'#'),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 6
0
 def test_decode_supported_rtp_configs(self):
     data = \
         b'\x02\x01\x00' + \
         b'\x00\x00' + \
         b'\x02\x01\x01'
     result = tlv8.deep_decode(data, )
     expected_data = tlv8.EntryList([
         tlv8.Entry(2, b'\x00'),
         tlv8.Entry(0, tlv8.EntryList()),
         tlv8.Entry(2, b'\x01')
     ])
     self.assertEqual(result, expected_data)
Exemplo n.º 7
0
 def test_decode_example_3(self):
     input_data = b'\x01\x15\x01\x10e\xad\x8b\xe8\xb3fD\xcb\xbde#\xccc\n\xb8\xef\x02\x01\x01'
     result = tlv8.deep_decode(input_data)
     expected = tlv8.EntryList([
         tlv8.Entry(
             1,
             tlv8.EntryList([
                 tlv8.Entry(
                     1, b'e\xad\x8b\xe8\xb3fD\xcb\xbde#\xccc\n\xb8\xef'),
                 tlv8.Entry(2, b'\x01'),
             ])),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 8
0
 def test_decode_missing_separator_nonstrict(self):
     data = b'\x01\x01\x02\x01\x01\x02'
     result = tlv8.deep_decode(data, strict_mode=False)
     self.assertEqual(
         result,
         tlv8.EntryList([tlv8.Entry(1, b'\x02'),
                         tlv8.Entry(1, b'\x02')]))
Exemplo n.º 9
0
 def test_decode_example_2(self):
     input_data = b'\x01\x01\x00'
     result = tlv8.deep_decode(input_data)
     expected = tlv8.EntryList([
         tlv8.Entry(1, b'\x00'),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 10
0
 def test_entrylist_encode_same_sep_type(self):
     el = tlv8.EntryList([
         tlv8.Entry(2, b'\x23'),
         tlv8.Entry(2, b'\x42')
     ])
     result = el.encode(1)
     self.assertEqual(b'\x02\x01\x23\x01\x00\x02\x01\x42', result)
Exemplo n.º 11
0
 def test_entrylist_index(self):
     el = tlv8.EntryList()
     e1 = tlv8.Entry(1, 2)
     e2 = tlv8.Entry(3, 4)
     el.append(e1)
     el.append(e2)
     self.assertEqual(e2, el[1])
Exemplo n.º 12
0
 def test_entrylist_length(self):
     el = tlv8.EntryList()
     self.assertEqual(0, len(el))
     el.append(tlv8.Entry(1, 2))
     self.assertEqual(1, len(el))
     el.append(tlv8.Entry(1, 2))
     self.assertEqual(2, len(el))
Exemplo n.º 13
0
 def test_decode_int1(self):
     input_data = b'\x01\x01' + pack('<b', -123)
     result = tlv8.deep_decode(input_data)
     expected = tlv8.EntryList([
         tlv8.Entry(1, b'\x85'),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 14
0
 def test_decode_error_4(self):
     data = b'\x01\x02Hi'
     result = tlv8.decode(data, {1: tlv8.DataType.STRING})
     expected_data = tlv8.EntryList([
         tlv8.Entry(1, 'Hi')
     ])
     self.assertEqual(result, expected_data)
Exemplo n.º 15
0
 def test_decode_float(self):
     input_data = b'\x01\x04' + pack('<f', 3.141)
     result = tlv8.deep_decode(input_data)
     expected = tlv8.EntryList([
         tlv8.Entry(1, b'%\x06I@'),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 16
0
 def test_decode_2_entries_1_expected(self):
     input_data = b'\x02\x01\x23\x03\x01\x42'
     structure = {
         2: tlv8.DataType.INTEGER
     }
     result = tlv8.decode(input_data, structure)
     self.assertEqual(tlv8.EntryList([tlv8.Entry(2, 0x23)]), result)
Exemplo n.º 17
0
 def test_decode_int4(self):
     input_data = b'\x01\x08' + pack('<q', 4611686018427387904)
     result = tlv8.deep_decode(input_data)
     expected = tlv8.EntryList([
         tlv8.Entry(1, b'\x00\x00\x00\x00\x00\x00\x00@'),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 18
0
 def test_decode_int2(self):
     input_data = b'\x01\x02' + pack('<h', 12345)
     result = tlv8.deep_decode(input_data)
     expected = tlv8.EntryList([
         tlv8.Entry(1, b'90'),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 19
0
 def test_entrylist_first_by_id(self):
     el = tlv8.EntryList([
         tlv8.Entry(2, b'\x23'),
         tlv8.Entry(2, b'\x42')
     ])
     self.assertEqual(el.first_by_id(1), None)
     self.assertEqual(el.first_by_id(2), el[0])
Exemplo n.º 20
0
 def test_decode_4(self):
     input_data = b'\x01\x01\x23\x02\x03\x04\x01\x42\x01\x01\x23'
     structure = {
         1: tlv8.DataType.INTEGER,
         2: {
             4: tlv8.DataType.INTEGER,
         }
     }
     result = tlv8.decode(input_data, structure)
     expected = tlv8.EntryList([
         tlv8.Entry(1, 0x23),
         tlv8.Entry(2, tlv8.EntryList([
             tlv8.Entry(4, 0x42),
         ])),
         tlv8.Entry(1, 0x23),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 21
0
    def test_entrylist_assert_has(self):
        el = tlv8.EntryList([
            tlv8.Entry(2, b'\x23')
        ])
        with self.assertRaises(AssertionError) as error_context:
            el.assert_has(3, 'no bla bla')
        self.assertEqual(str(error_context.exception), 'no bla bla')

        el.assert_has(2, 'no bla bla')
Exemplo n.º 22
0
 def test_decode_example_2(self):
     input_data = b'\x01\x01\x00'
     structure = {
         1: tlv8.DataType.INTEGER,
     }
     result = tlv8.decode(input_data, structure)
     expected = tlv8.EntryList([
         tlv8.Entry(1, 0),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 23
0
    def test_entrylist_format_string(self):
        el = tlv8.EntryList([
            tlv8.Entry(1, 1),
            tlv8.Entry(2, tlv8.EntryList([
                tlv8.Entry(4, 4),
                tlv8.Entry(5, 5)
            ])),
            tlv8.Entry(3, 3),
        ])
        result = tlv8.format_string(el)
        expected = """[
  <1, 1>,
  <2, [
    <4, 4>,
    <5, 5>,
  ]>,
  <3, 3>,
]"""
        self.assertEqual(result, expected)
Exemplo n.º 24
0
    def test_decode_value(self):
        class TestValues(enum.IntEnum):
            VALUE_1 = 1
            VALUE_2 = 2

        data = b'\x01\x01\x02'
        result = tlv8.decode(data, {1: TestValues})
        expected = tlv8.EntryList([tlv8.Entry(1, 2)])
        self.assertIsInstance(result[0].data, TestValues)
        self.assertEqual(expected, result)
Exemplo n.º 25
0
 def test_decode_float(self):
     input_data = b'\x01\x04' + pack('<f', 3.141)
     structure = {
         1: tlv8.DataType.FLOAT,
     }
     result = tlv8.decode(input_data, structure)
     expected = tlv8.EntryList([
         tlv8.Entry(1, 3.141),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 26
0
    def test_decode_key(self):
        class TestKeys(enum.IntEnum):
            KEY_1 = 1
            KEY_2 = 2

        data = b'\x01\x03foo'
        result = tlv8.decode(data, {TestKeys.KEY_1: tlv8.DataType.STRING})
        expected = tlv8.EntryList([tlv8.Entry(TestKeys.KEY_1, 'foo')])
        self.assertIsInstance(result[0].type_id, TestKeys)
        self.assertEqual(expected, result)
Exemplo n.º 27
0
 def test_decode_int2_un(self):
     input_data = b'\x01\x02' + pack('<H', 12345)
     structure = {
         1: tlv8.DataType.UNSIGNED_INTEGER,
     }
     result = tlv8.decode(input_data, structure)
     expected = tlv8.EntryList([
         tlv8.Entry(1, 12345),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 28
0
 def test_decode_int1_pos(self):
     input_data = b'\x01\x01' + pack('<b', 123)
     structure = {
         1: tlv8.DataType.INTEGER,
     }
     result = tlv8.decode(input_data, structure)
     expected = tlv8.EntryList([
         tlv8.Entry(1, 123),
     ])
     self.assertEqual(expected, result)
Exemplo n.º 29
0
    def test_decode_int8_un(self):
        input_data = b'\x01\x08' + pack('<q', 4611686018427387904)
        structure = {
            1: tlv8.DataType.UNSIGNED_INTEGER,
        }
        result = tlv8.decode(input_data, structure)

        expected = tlv8.EntryList([
            tlv8.Entry(1, 4611686018427387904),
        ])
        self.assertEqual(expected, result)
Exemplo n.º 30
0
    def test_decode_int4_neg(self):
        input_data = b'\x01\x04' + pack('<i', -12345)
        structure = {
            1: tlv8.DataType.INTEGER,
        }
        result = tlv8.decode(input_data, structure)

        expected = tlv8.EntryList([
            tlv8.Entry(1, -12345),
        ])
        self.assertEqual(expected, result)