def test_get_files_with_length(self): name_bytes = b'\xe8\xaf\xad\xe8\xa8\x80\xe5\xa4\x84\xe7\x90\x86' name_unicode = name_bytes.decode() t = TorrentDef() t.metainfo = { b'info': { b'files': [{ b'path.utf-8': [name_bytes], b'length': 123 }, { b'path.utf-8': [b'file.txt'], b'length': 456 }] } } self.assertEqual(t.get_files_with_length(), [(Path(name_unicode), 123), (Path('file.txt'), 456)]) t.metainfo = { b'info': { b'files': [{ b'path': [name_bytes], b'length': 123 }, { b'path': [b'file.txt'], b'length': 456 }] } } self.assertEqual(t.get_files_with_length(), [(Path(name_unicode), 123), (Path('file.txt'), 456)]) t.metainfo = { b'info': { b'files': [{ b'path': [b'test\xff' + name_bytes], b'length': 123 }, { b'path': [b'file.txt'], b'length': 456 }] } } self.assertEqual(t.get_files_with_length(), [(Path('test?????????????'), 123), (Path('file.txt'), 456)]) t.metainfo = { b'info': { b'files': [{ b'path.utf-8': [b'test\xff' + name_bytes], b'length': 123 }, { b'path': [b'file.txt'], b'length': 456 }] } } self.assertEqual(t.get_files_with_length(), [(Path('file.txt'), 456)])
def test_files_no_metainfo(self): """ Test whether a TorrentDef without metainfo has no files. """ t = TorrentDef() self.assertEqual(0, len(t.get_files_with_length()))