def test_parse_escaped_byte_string(self): decoder = Decoder(b'ab3:\x01\x01\x01f') decoder.idx = 2 b = decoder._Decoder__parse() print(b) self.assertIsInstance(b, bytes, msg='Bencode string returned wrong type.') self.assertEqual(b, b'\x01\x01\x01', msg='Failed to decode bencode escaped byte string.')
def test__read(self): decoder = Decoder(b'abcdefg') decoder.idx = 1 b = decoder._Decoder__read(3) self.assertEqual(b, b'bcd', msg='__read(i) failed to copy the correct bytes.')
def test__parse_invalid_character_exception(self): decoder = Decoder(b'abc') decoder.idx = 0 with self.assertRaises(DecodingError): decoder._Decoder__parse()
def test__parse_eof_exception(self): decoder = Decoder(b'abc') decoder.idx = 3 with self.assertRaises(DecodingError): decoder._Decoder__parse()
def test_parse_a_list(self): decoder = Decoder(b'abl1:A1:Becdefghijklmn') decoder.idx = 2 b = decoder._Decoder__parse() self.assertIsInstance(b, list, msg='Bencode list returned wrong type.') self.assertEqual(b, [b'A', b'B'], msg='Failed to decode bencode list.')
def test_parse_a_dictionary(self): decoder = Decoder(b'abd1:A1:Beghijklmn') decoder.idx = 2 b = decoder._Decoder__parse() self.assertIsInstance(b, dict, msg='Bencode dictionary returned wrong type.') self.assertEqual(b, {b'A': b'B'}, msg='Failed to decode bencode dictionary.')
def test_parse_a_integer(self): decoder = Decoder(b'abi42eefhijklmnop') decoder.idx = 2 b = decoder._Decoder__parse() self.assertIsInstance(b, int, msg='Bencode integer returned wrong type.') self.assertEqual(b, 42, msg='Failed to decode bencode integer.')
def test_parse_a_string(self): decoder = Decoder(b'ab3:cdefhijklmnop') decoder.idx = 2 b = decoder._Decoder__parse() self.assertIsInstance(b, bytes, msg='Bencode string returned wrong type.') self.assertEqual(b, b'cde', msg='Failed to decode bencode string.')
def test__read_to_exception(self): decoder = Decoder(b'a:bcdef') decoder.idx = 3 with self.assertRaises(DecodingError): decoder._Decoder__read_to(b':')
def test__read_to(self): decoder = Decoder(b'abc:def') decoder.idx = 0 b = decoder._Decoder__read_to(b':') self.assertEqual(b, b'abc', msg='__read_to(b) failed to copy the correct bytes.')
def test__read_exception(self): decoder = Decoder(b'abcdefg') decoder.idx = 1 with self.assertRaises(DecodingError): decoder._Decoder__read(10)