def test_builder_works(self):
     self.next_token = tokenizer("d4:key1l4:val14:val2i10eee").next 
     self.result = builder(self.next_token(), self.next_token)
     self.assertEqual({"key1":["val1", "val2", 10]}, self.result)
 def test_raise_exception_if_token_not_in_alphabet(self):
     with self.assertRaises(BencodeSyntaxError) as context:
         tokenizer("a").next()
         self.assertEqual()
 def test_dict(self):
     self.next_token = tokenizer("de").next
     self.assertEqual("d", self.next_token())
     self.assertEqual("e", self.next_token())
 def test_list(self):
     self.next_token = tokenizer("le").next
     self.assertEqual("l", self.next_token())
     self.assertEqual("e", self.next_token())
 def test_str(self):
     self.next_token = tokenizer("5:Hello").next
     self.assertEqual("s",     self.next_token())
     self.assertEqual("Hello", self.next_token())
 def test_int(self):
     self.next_token = tokenizer("i10e").next
     self.assertEqual("i",  self.next_token())
     self.assertEqual("10", self.next_token())
     self.assertEqual("e",  self.next_token())