Exemplo n.º 1
0
    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)
Exemplo n.º 2
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)])
Exemplo n.º 3
0
 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?????????????')
Exemplo n.º 4
0
    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())
Exemplo n.º 5
0
    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)