Пример #1
0
class PeerTests(unittest.TestCase):
    def setUp(self):
        t = Torrent('portrait.torrent')
        self.peer = Peer('-DD00011234567891234', '127.0.0.1', 8201, t)

    def test_bitfield_handle(self):
        self.peer._handle_bitfield(b'\xc0')
        self.assertEqual(self.peer.pieces, {0,1}, 'We should have pieces 1 and 2')

        self.peer.torrent.num_pieces = 23
        self.peer.pieces = set()
        """
        01000001 11000000 0010010 0
        65 = b'A'
        192 = b'\xc0'
        36 = b'$'
        """
        self.peer._handle_bitfield(b'A\xc0$')
        self.assertEqual(self.peer.pieces, {1,7,8,9,18,21}, 'Should render these pieces')
        self.peer.torrent.num_pieces = 2

        self.peer.torrent.num_pieces = 8
        self.peer.pieces = set()
        self.peer._handle_bitfield(b'\x01')
        self.assertEqual(self.peer.pieces, {7}, 'Should just be the one')
        self.peer.torrent.num_pieces = 2