def test_get_index(self): """ Test whether we can successfully get the index of a file in a torrent. """ t = TorrentDef() t.metainfo = { b'info': { b'files': [{ b'path': [b'a.txt'], b'length': 123 }] } } self.assertEqual(t.get_index_of_file_in_files('a.txt'), 0) self.assertRaises(ValueError, t.get_index_of_file_in_files, b'b.txt') self.assertRaises(ValueError, t.get_index_of_file_in_files, None) t.metainfo = { b'info': { b'files': [{ b'path': [b'a.txt'], b'path.utf-8': [b'b.txt'], b'length': 123 }] } } self.assertEqual(t.get_index_of_file_in_files('b.txt'), 0)
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_get_name_as_unicode(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'name.utf-8': name_bytes}} self.assertEqual(t.get_name_as_unicode(), name_unicode) t.metainfo = {b'info': {b'name': name_bytes}} self.assertEqual(t.get_name_as_unicode(), name_unicode) t.metainfo = {b'info': {b'name': b'test\xff' + name_bytes}} self.assertEqual(t.get_name_as_unicode(), 'test?????????????')
def test_is_multifile(self): """ Test whether a TorrentDef is correctly classified as multifile torrent """ tdef = TorrentDef() self.assertFalse(tdef.is_multifile_torrent()) tdef.metainfo = {} self.assertFalse(tdef.is_multifile_torrent()) tdef.metainfo = {b'info': {b'files': [b'a']}} self.assertTrue(tdef.is_multifile_torrent())
def test_get_nr_pieces(self): """ Test getting the number of pieces from a TorrentDef """ tdef = TorrentDef() self.assertEqual(tdef.get_nr_pieces(), 0) tdef.metainfo = {b'info': {b'pieces': b'a' * 40}} self.assertEqual(tdef.get_nr_pieces(), 2)