def test_tid(self): descr, rest = VpxPayloadDescriptor.parse(b'\x90\x20\xe0') self.assertEqual(descr.partition_start, 1) self.assertEqual(descr.partition_id, 0) self.assertEqual(descr.picture_id, None) self.assertEqual(descr.tl0picidx, None) self.assertEqual(descr.tid, (3, 1)) self.assertEqual(descr.keyidx, None) self.assertEqual(bytes(descr), b'\x90\x20\xe0') self.assertEqual(rest, b'')
def test_short_picture_id_127(self): descr, rest = VpxPayloadDescriptor.parse(b"\x90\x80\x7f") self.assertEqual(descr.partition_start, 1) self.assertEqual(descr.partition_id, 0) self.assertEqual(descr.picture_id, 127) self.assertEqual(descr.tl0picidx, None) self.assertEqual(descr.tid, None) self.assertEqual(descr.keyidx, None) self.assertEqual(bytes(descr), b"\x90\x80\x7f") self.assertEqual(rest, b"")
def test_tl0picidx(self): descr, rest = VpxPayloadDescriptor.parse(b'\x90\xc0\x92\x67\x81') self.assertEqual(descr.partition_start, 1) self.assertEqual(descr.partition_id, 0) self.assertEqual(descr.picture_id, 4711) self.assertEqual(descr.tl0picidx, 129) self.assertEqual(descr.tid, None) self.assertEqual(descr.keyidx, None) self.assertEqual(bytes(descr), b'\x90\xc0\x92\x67\x81') self.assertEqual(rest, b'')
def test_long_picture_id_128(self): descr, rest = VpxPayloadDescriptor.parse(b'\x90\x80\x80\x80') self.assertEqual(descr.partition_start, 1) self.assertEqual(descr.partition_id, 0) self.assertEqual(descr.picture_id, 128) self.assertEqual(descr.tl0picidx, None) self.assertEqual(descr.tid, None) self.assertEqual(descr.keyidx, None) self.assertEqual(bytes(descr), b'\x90\x80\x80\x80') self.assertEqual(rest, b'')
def test_keyidx(self): descr, rest = VpxPayloadDescriptor.parse(b"\x90\x10\x1f") self.assertEqual(descr.partition_start, 1) self.assertEqual(descr.partition_id, 0) self.assertEqual(descr.picture_id, None) self.assertEqual(descr.tl0picidx, None) self.assertEqual(descr.tid, None) self.assertEqual(descr.keyidx, 31) self.assertEqual(bytes(descr), b"\x90\x10\x1f") self.assertEqual(rest, b"")
def test_no_picture_id(self): descr, rest = VpxPayloadDescriptor.parse(b'\x10') self.assertEqual(descr.partition_start, 1) self.assertEqual(descr.partition_id, 0) self.assertEqual(descr.picture_id, None) self.assertEqual(descr.tl0picidx, None) self.assertEqual(descr.tid, None) self.assertEqual(descr.keyidx, None) self.assertEqual(bytes(descr), b'\x10') self.assertEqual(repr(descr), 'VpxPayloadDescriptor(S=1, PID=0, pic_id=None)') self.assertEqual(rest, b'')
def test_long_picture_id_4711(self): """ From RFC 7741 - 4.6.5 """ descr, rest = VpxPayloadDescriptor.parse(b'\x90\x80\x92\x67') self.assertEqual(descr.partition_start, 1) self.assertEqual(descr.partition_id, 0) self.assertEqual(descr.picture_id, 4711) self.assertEqual(descr.tl0picidx, None) self.assertEqual(descr.tid, None) self.assertEqual(descr.keyidx, None) self.assertEqual(bytes(descr), b'\x90\x80\x92\x67') self.assertEqual(rest, b'')
def test_short_picture_id_17(self): """ From RFC 7741 - 4.6.3 """ descr, rest = VpxPayloadDescriptor.parse(b'\x90\x80\x11') self.assertEqual(descr.partition_start, 1) self.assertEqual(descr.partition_id, 0) self.assertEqual(descr.picture_id, 17) self.assertEqual(descr.tl0picidx, None) self.assertEqual(descr.tid, None) self.assertEqual(descr.keyidx, None) self.assertEqual(bytes(descr), b'\x90\x80\x11') self.assertEqual(repr(descr), 'VpxPayloadDescriptor(S=1, PID=0, pic_id=17)') self.assertEqual(rest, b'')
def test_truncated(self): with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b"") self.assertEqual(str(cm.exception), "VPX descriptor is too short") with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b"\x80") self.assertEqual(str(cm.exception), "VPX descriptor has truncated extended bits") with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b"\x80\x80") self.assertEqual(str(cm.exception), "VPX descriptor has truncated PictureID") with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b"\x80\x80\x80") self.assertEqual(str(cm.exception), "VPX descriptor has truncated long PictureID") with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b"\x80\x40") self.assertEqual(str(cm.exception), "VPX descriptor has truncated TL0PICIDX") with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b"\x80\x20") self.assertEqual(str(cm.exception), "VPX descriptor has truncated T/K") with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b"\x80\x10") self.assertEqual(str(cm.exception), "VPX descriptor has truncated T/K")
def test_truncated(self): with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b'') self.assertEqual(str(cm.exception), 'VPX descriptor is too short') with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b'\x80') self.assertEqual(str(cm.exception), 'VPX descriptor has truncated extended bits') with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b'\x80\x80') self.assertEqual(str(cm.exception), 'VPX descriptor has truncated PictureID') with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b'\x80\x80\x80') self.assertEqual(str(cm.exception), 'VPX descriptor has truncated long PictureID') with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b'\x80\x40') self.assertEqual(str(cm.exception), 'VPX descriptor has truncated TL0PICIDX') with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b'\x80\x20') self.assertEqual(str(cm.exception), 'VPX descriptor has truncated T/K') with self.assertRaises(ValueError) as cm: VpxPayloadDescriptor.parse(b'\x80\x10') self.assertEqual(str(cm.exception), 'VPX descriptor has truncated T/K')