first commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
"""Prüft die Formataushandlung nach dem Wi-Fi-Display-Standard."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from wfd import formats
|
||||
|
||||
|
||||
class FormatTest(unittest.TestCase):
|
||||
|
||||
# So antwortet ein handelsüblicher Fernseher auf M3.
|
||||
TYPICAL = "00 00 02 04 0001DEFF 155557FF 00000FFF 00 0000 0000 11 none none"
|
||||
|
||||
def test_parses_capabilities(self):
|
||||
caps = formats.parse_video_formats(self.TYPICAL)
|
||||
self.assertEqual(1, len(caps))
|
||||
self.assertEqual(0x02, caps[0].profile)
|
||||
self.assertEqual(0x04, caps[0].level)
|
||||
self.assertEqual(0x0001DEFF, caps[0].cea_mask)
|
||||
|
||||
def test_chooses_720p30(self):
|
||||
chosen = formats.choose(formats.parse_video_formats(self.TYPICAL))
|
||||
self.assertEqual((1280, 720, 30), (chosen.width, chosen.height, chosen.fps))
|
||||
|
||||
def test_respects_height_limit(self):
|
||||
caps = formats.parse_video_formats(self.TYPICAL)
|
||||
chosen = formats.choose(caps, max_height=480)
|
||||
self.assertEqual(480, chosen.height)
|
||||
|
||||
def test_falls_back_to_small_format(self):
|
||||
caps = formats.parse_video_formats(
|
||||
"00 00 01 02 00000003 00000000 00000000 00 0000 0000 00 none none")
|
||||
chosen = formats.choose(caps)
|
||||
self.assertEqual((640, 480), (chosen.width, chosen.height))
|
||||
|
||||
def test_no_common_format(self):
|
||||
caps = formats.parse_video_formats(
|
||||
"00 00 01 02 00000000 00000000 00000000 00 0000 0000 00 none none")
|
||||
self.assertIsNone(formats.choose(caps))
|
||||
|
||||
def test_never_picks_interlaced(self):
|
||||
# Nur interlaced-Bits gesetzt: 2, 4, 9, 14
|
||||
mask = (1 << 2) | (1 << 4) | (1 << 9) | (1 << 14)
|
||||
caps = formats.parse_video_formats(
|
||||
f"00 00 01 02 {mask:08X} 00000000 00000000 00 0000 0000 00 none none")
|
||||
self.assertIsNone(formats.choose(caps))
|
||||
|
||||
def test_selection_announces_exactly_one_format(self):
|
||||
selection = formats.build_selection(formats.CEA[5], 0x02, 0x04)
|
||||
fields = selection.split()
|
||||
self.assertEqual(13, len(fields))
|
||||
self.assertEqual(1 << 5, int(fields[4], 16))
|
||||
self.assertEqual(1, bin(int(fields[4], 16)).count("1"))
|
||||
self.assertEqual(["none", "none"], fields[11:13])
|
||||
|
||||
def test_reads_rtp_port(self):
|
||||
self.assertEqual(19000, formats.parse_rtp_port("RTP/AVP/UDP;unicast 19000 0 mode=play"))
|
||||
self.assertEqual(0, formats.parse_rtp_port(None))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user