|
|
@@ -70,11 +70,11 @@ def decode_list(x, f): |
|
|
|
|
|
|
|
def decode_dict(x, f): |
|
|
|
r, f = {}, f+1 |
|
|
|
lastkey = '' |
|
|
|
lastkey = None |
|
|
|
while x[f] != b'e'[0]: |
|
|
|
k, f = decode_string(x, f) |
|
|
|
k = k.decode('us-ascii') |
|
|
|
if lastkey >= k: |
|
|
|
if lastkey is not None and lastkey >= k: |
|
|
|
raise ValueError |
|
|
|
lastkey = k |
|
|
|
r[k], f = decode_func[x[f]](x, f) |
|
|
@@ -339,9 +339,13 @@ class _TestCases(unittest.TestCase): |
|
|
|
def test_bencode(self): |
|
|
|
test_bencode() |
|
|
|
|
|
|
|
self.assertEqual(bencode({'': 5}), b'd0:i5ee') |
|
|
|
|
|
|
|
def test_bdecode(self): |
|
|
|
test_bdecode() |
|
|
|
|
|
|
|
self.assertEqual(bdecode(b'd0:i5ee'), { '': 5 }) |
|
|
|
|
|
|
|
try: #pragma: no cover |
|
|
|
import psyco |
|
|
|
psyco.bind(bdecode) |
|
|
|