3 # Allow direct execution
7 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
9 from test.helper import FakeYDL
14 super(YDL, self).__init__()
15 self.downloaded_info_dicts = []
17 def process_info(self, info_dict):
18 self.downloaded_info_dicts.append(info_dict)
21 class TestFormatSelection(unittest.TestCase):
22 def test_prefer_free_formats(self):
23 # Same resolution => download webm
25 ydl.params['prefer_free_formats'] = True
27 {u'ext': u'webm', u'height': 460},
28 {u'ext': u'mp4', u'height': 460},
30 info_dict = {u'formats': formats, u'extractor': u'test'}
31 ydl.process_ie_result(info_dict)
32 downloaded = ydl.downloaded_info_dicts[0]
33 self.assertEqual(downloaded[u'ext'], u'webm')
35 # Different resolution => download best quality (mp4)
37 ydl.params['prefer_free_formats'] = True
39 {u'ext': u'webm', u'height': 720},
40 {u'ext': u'mp4', u'height': 1080},
42 info_dict[u'formats'] = formats
43 ydl.process_ie_result(info_dict)
44 downloaded = ydl.downloaded_info_dicts[0]
45 self.assertEqual(downloaded[u'ext'], u'mp4')
47 # No prefer_free_formats => keep original formats order
49 ydl.params['prefer_free_formats'] = False
51 {u'ext': u'webm', u'height': 720},
52 {u'ext': u'flv', u'height': 720},
54 info_dict[u'formats'] = formats
55 ydl.process_ie_result(info_dict)
56 downloaded = ydl.downloaded_info_dicts[0]
57 self.assertEqual(downloaded[u'ext'], u'flv')
59 if __name__ == '__main__':