def test_list(self): res = Decoder(b'l4:spam4:eggsi123ee').decode() self.assertEqual(len(res), 3) self.assertEqual(res[0], b'spam') self.assertEqual(res[1], b'eggs') self.assertEqual(res[2], 123)
def test_malformed_key_in_dict_should_failed(self): with self.assertRaises(EOFError): Decoder(b'd3:moo4:spam4:eggse').decode()
def test_dict(self): res = Decoder(b'd3:cow3:moo4:spam4:eggse').decode() self.assertTrue(isinstance(res, dict)) self.assertEqual(res[b'cow'], b'moo') self.assertEqual(res[b'spam'], b'eggs')
def test_string_with_space(self): res = Decoder(b'12:Middle Earth').decode() self.assertEqual(res, b'Middle Earth')
def test_string(self): res = Decoder(b'4:name').decode() self.assertEqual(res, b'name')
def test_min_string(self): res = Decoder(b'1:a').decode() self.assertEqual(res, b'a')
def test_not_a_string(self): with self.assertRaises(TypeError): Decoder(123).decode() with self.assertRaises(TypeError): Decoder({'a': 1}).decode()
def test_integer(self): res = Decoder(b'i123e').decode() self.assertEqual(int(res), 123)
def test_empty_string(self): with self.assertRaises(EOFError): Decoder(b'').decode()
def test_read_until_not_found(self): decoder = Decoder(b'123456') with self.assertRaises(RuntimeError): decoder._read_until(b'7')
def test_read_until_found(self): decoder = Decoder(b'123456') self.assertEqual(b'123', decoder._read_until(b'4'))
def test_peek_should_handle_end(self): decoder = Decoder(b'1') decoder._index = 1 self.assertEqual(None, decoder._peek())
def test_peek_iis_idempotent(self): decoder = Decoder(b'12') self.assertEqual(b'1', decoder._peek()) self.assertEqual(b'1', decoder._peek())