aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--netlib/odict.py10
-rw-r--r--test/test_odict.py9
2 files changed, 19 insertions, 0 deletions
diff --git a/netlib/odict.py b/netlib/odict.py
index 7c743f4e..46b74e8e 100644
--- a/netlib/odict.py
+++ b/netlib/odict.py
@@ -96,6 +96,16 @@ class ODict:
def items(self):
return self.lst[:]
+ def _get_state(self):
+ return [tuple(i) for i in self.lst]
+
+ def _load_state(self, state):
+ self.list = [list(i) for i in state]
+
+ @classmethod
+ def _from_state(klass, state):
+ return klass([list(i) for i in state])
+
def copy(self):
"""
Returns a copy of this object.
diff --git a/test/test_odict.py b/test/test_odict.py
index cdbb4f39..794956be 100644
--- a/test/test_odict.py
+++ b/test/test_odict.py
@@ -24,6 +24,15 @@ class TestODict:
for i in expected:
assert out.find(i) >= 0
+ def test_getset_state(self):
+ self.od.add("foo", 1)
+ self.od.add("foo", 2)
+ self.od.add("bar", 3)
+ state = self.od._get_state()
+ nd = odict.ODict._from_state(state)
+ assert nd == self.od
+ nd._load_state(state)
+
def test_dictToHeader2(self):
self.od["one"] = ["uno"]
expected1 = "one: uno\r\n"