-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathtest_bencode.py
67 lines (54 loc) · 1.96 KB
/
test_bencode.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import unittest
from bittorrent import bencode, utils
class TestBencode(unittest.TestCase):
def test_string(self):
self.assertEqual(bencode.encode('test'), '4:test')
def test_int(self):
self.assertEqual(bencode.encode(12), 'i12e')
self.assertEqual(bencode.encode(-12), 'i-12e')
self.assertEqual(bencode.encode(-0), 'i0e')
def test_list(self):
self.assertEqual(bencode.encode([]), 'le')
self.assertEqual(bencode.encode([
['test', 2], [
['foo'], [3]
]
]), 'll4:testi2eell3:fooeli3eeee')
def test_dict(self):
self.assertEqual(bencode.encode({}), 'de')
self.assertEqual(bencode.encode({
'test': 12,
'foo': [
'bar',
{'test': ['again', 12]}
]
}), 'd3:fool3:bard4:testl5:againi12eeee4:testi12ee')
class TestBdecode(unittest.TestCase):
def test_string(self):
self.assertEqual(bencode.decode('4:test'), 'test')
def test_int(self):
self.assertEqual(bencode.decode('i12e'), 12)
self.assertEqual(bencode.decode('i-12e'), -12)
self.assertEqual(bencode.decode('i0e'), 0)
def test_list(self):
self.assertEqual(bencode.decode('le'), [])
self.assertEqual(bencode.decode('ll4:testi2eell3:fooeli3eeee'), [
['test', 2], [
['foo'], [3]
]
])
def test_dict(self):
self.assertEqual(bencode.decode('de'), {})
self.assertEqual(bencode.decode('d3:fool3:bard4:testl5:againi12eeee4:testi12ee'), {
'test': 12,
'foo': [
'bar',
{'test': ['again', 12]}
]
})
self.assertRaises(ValueError, bencode.decode, 'di1ei1ee')
def test_edge_cases(self):
self.assertRaises(ValueError, bencode.decode, 'i-0e')
self.assertRaises(ValueError, bencode.decode, '')
if __name__ == '__main__':
unittest.main()