source: trunk/src/allmydata/test/test_netstring.py

Last change on this file was 1cfe843d, checked in by Alexandre Detiste <alexandre.detiste@…>, at 2024-02-22T23:40:25Z

more python2 removal

  • Property mode set to 100644
File size: 2.2 KB
Line 
1"""
2Tests for allmydata.util.netstring.
3
4Ported to Python 3.
5"""
6
7from twisted.trial import unittest
8
9from allmydata.util.netstring import netstring, split_netstring
10
11
12class Netstring(unittest.TestCase):
13    def test_encode(self):
14        """netstring() correctly encodes the given bytes."""
15        result = netstring(b"abc")
16        self.assertEqual(result, b"3:abc,")
17        self.assertIsInstance(result, bytes)
18
19    def test_split(self):
20        a = netstring(b"hello") + netstring(b"world")
21        for s in split_netstring(a, 2)[0]:
22            self.assertIsInstance(s, bytes)
23        self.failUnlessEqual(split_netstring(a, 2), ([b"hello", b"world"], len(a)))
24        self.failUnlessEqual(split_netstring(a, 2, required_trailer=b""), ([b"hello", b"world"], len(a)))
25        self.failUnlessRaises(ValueError, split_netstring, a, 3)
26        self.failUnlessRaises(ValueError, split_netstring, a+b" extra", 2, required_trailer=b"")
27        self.failUnlessEqual(split_netstring(a+b" extra", 2), ([b"hello", b"world"], len(a)))
28        self.failUnlessEqual(split_netstring(a+b"++", 2, required_trailer=b"++"),
29                             ([b"hello", b"world"], len(a)+2))
30        self.failUnlessRaises(ValueError,
31                              split_netstring, a+b"+", 2, required_trailer=b"not")
32
33    def test_extra(self):
34        a = netstring(b"hello")
35        self.failUnlessEqual(split_netstring(a, 1), ([b"hello"], len(a)))
36        b = netstring(b"hello") + b"extra stuff"
37        self.failUnlessEqual(split_netstring(b, 1),
38                             ([b"hello"], len(a)))
39
40    def test_nested(self):
41        a = netstring(b"hello") + netstring(b"world") + b"extra stuff"
42        b = netstring(b"a") + netstring(b"is") + netstring(a) + netstring(b".")
43        (top, pos) = split_netstring(b, 4)
44        self.failUnlessEqual(len(top), 4)
45        self.failUnlessEqual(top[0], b"a")
46        self.failUnlessEqual(top[1], b"is")
47        self.failUnlessEqual(top[2], a)
48        self.failUnlessEqual(top[3], b".")
49        self.failUnlessRaises(ValueError, split_netstring, a, 2, required_trailer=b"")
50        bottom = split_netstring(a, 2)
51        self.failUnlessEqual(bottom, ([b"hello", b"world"], len(netstring(b"hello")+netstring(b"world"))))
Note: See TracBrowser for help on using the repository browser.