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