2 from twisted.trial import unittest
3 from allmydata.util.netstring import netstring, split_netstring
5 class Netstring(unittest.TestCase):
7 a = netstring("hello") + netstring("world")
8 self.failUnlessEqual(split_netstring(a, 2), (["hello", "world"], len(a)))
9 self.failUnlessEqual(split_netstring(a, 2, required_trailer=""), (["hello", "world"], len(a)))
10 self.failUnlessRaises(ValueError, split_netstring, a, 3)
11 self.failUnlessRaises(ValueError, split_netstring, a+" extra", 2, required_trailer="")
12 self.failUnlessEqual(split_netstring(a+" extra", 2), (["hello", "world"], len(a)))
13 self.failUnlessEqual(split_netstring(a+"++", 2, required_trailer="++"),
14 (["hello", "world"], len(a)+2))
15 self.failUnlessRaises(ValueError,
16 split_netstring, a+"+", 2, required_trailer="not")
19 a = netstring("hello")
20 self.failUnlessEqual(split_netstring(a, 1), (["hello"], len(a)))
21 b = netstring("hello") + "extra stuff"
22 self.failUnlessEqual(split_netstring(b, 1),
25 def test_nested(self):
26 a = netstring("hello") + netstring("world") + "extra stuff"
27 b = netstring("a") + netstring("is") + netstring(a) + netstring(".")
28 (top, pos) = split_netstring(b, 4)
29 self.failUnlessEqual(len(top), 4)
30 self.failUnlessEqual(top[0], "a")
31 self.failUnlessEqual(top[1], "is")
32 self.failUnlessEqual(top[2], a)
33 self.failUnlessEqual(top[3], ".")
34 self.failUnlessRaises(ValueError, split_netstring, a, 2, required_trailer="")
35 bottom = split_netstring(a, 2)
36 self.failUnlessEqual(bottom, (["hello", "world"], len(netstring("hello")+netstring("world"))))