add tests

This commit is contained in:
Dioarya 2024-12-23 08:02:23 +07:00
parent 663364f5c4
commit a6ea1cbc3a
No known key found for this signature in database
GPG key ID: C6DDD51704EAE7C0

View file

@ -549,6 +549,82 @@ class TestFormatSelection(unittest.TestCase):
ydl.process_ie_result(info_dict) ydl.process_ie_result(info_dict)
self.assertEqual(ydl.downloaded_info_dicts, []) self.assertEqual(ydl.downloaded_info_dicts, [])
formats2 = [
{'format_id': 'H', 'aspect_ratio': 1.0}, # 1:1
{'format_id': 'I', 'aspect_ratio': 1.33}, # 4:3
{'format_id': 'J', 'aspect_ratio': 1.5}, # 3:2
{'format_id': 'K', 'aspect_ratio': 1.78}, # 16:9
{'format_id': 'L', 'aspect_ratio': 2.33}, # 21:9
{'format_id': 'M', 'aspect_ratio': 0.75}, # 3:4
{'format_id': 'N', 'aspect_ratio': 0.67}, # 2:3
{'format_id': 'O', 'aspect_ratio': 0.56}, # 9:16
{'format_id': 'P', 'aspect_ratio': 0.43}, # 9:21
{'format_id': 'Q', 'aspect_ratio': 1.01},
{'format_id': 'R', 'aspect_ratio': 1.99},
{'format_id': 'T'},
{'format_id': 'S', 'aspect_ratio': 0.99},
]
for f in formats2:
f['url'] = 'http://_/'
f['ext'] = 'unknown'
info_dict2 = _make_result(formats2, _format_sort_fields=('id', ))
ydl = YDL({'format': 'best[aspect_ratio=1]'})
ydl.process_ie_result(info_dict2)
downloaded = ydl.downloaded_info_dicts[0]
self.assertEqual(downloaded['format_id'], 'H')
ydl = YDL({'format': 'all[aspect_ratio > 1.00]'})
ydl.process_ie_result(info_dict2)
downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts]
self.assertEqual(downloaded_ids, ['R', 'Q', 'L', 'K', 'J', 'I'])
ydl = YDL({'format': 'all[aspect_ratio < 1.00]'})
ydl.process_ie_result(info_dict2)
downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts]
self.assertEqual(downloaded_ids, ['S', 'P', 'O', 'N', 'M'])
ydl = YDL({'format': 'all[aspect_ratio>1.05]'})
ydl.process_ie_result(info_dict2)
downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts]
self.assertEqual(downloaded_ids, ['R', 'L', 'K', 'J', 'I'])
ydl = YDL({'format': 'all [aspect_ratio < 0.950]'})
ydl.process_ie_result(info_dict2)
downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts]
self.assertEqual(downloaded_ids, ['P', 'O', 'N', 'M'])
ydl = YDL({'format': 'best[aspect_ratio=1.5]'})
ydl.process_ie_result(info_dict2)
downloaded = ydl.downloaded_info_dicts[0]
self.assertEqual(downloaded['format_id'], 'J')
ydl = YDL({'format': 'all[aspect_ratio < 0.95], all[aspect_ratio>1.05]'})
ydl.process_ie_result(info_dict2)
downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts]
self.assertEqual(downloaded_ids, ['P', 'O', 'N', 'M', 'R', 'L', 'K', 'J', 'I'])
ydl = YDL({'format': 'all[aspect_ratio>=0.95][aspect_ratio <= 1.05]'})
ydl.process_ie_result(info_dict2)
downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts]
self.assertEqual(downloaded_ids, ['S', 'Q', 'H'])
ydl = YDL({'format': 'all[aspect_ratio!=1]'})
ydl.process_ie_result(info_dict2)
downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts]
self.assertEqual(downloaded_ids, ['S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I'])
ydl = YDL({'format': 'all[aspect_ratio!=1]'})
ydl.process_ie_result(info_dict2)
downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts]
self.assertEqual(downloaded_ids, ['S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I'])
ydl = YDL({'format': 'best[aspect_ratio >=? 3.33]'})
ydl.process_ie_result(info_dict2)
downloaded = ydl.downloaded_info_dicts[0]
self.assertEqual(downloaded['format_id'], 'T')
@patch('yt_dlp.postprocessor.ffmpeg.FFmpegMergerPP.available', False) @patch('yt_dlp.postprocessor.ffmpeg.FFmpegMergerPP.available', False)
def test_default_format_spec_without_ffmpeg(self): def test_default_format_spec_without_ffmpeg(self):
ydl = YDL({}) ydl = YDL({})