aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2014-03-02 16:54:21 +1300
committerAldo Cortesi <aldo@nullcube.com>2014-03-02 16:54:21 +1300
commit1acaf1c880ba7054e4eb1cc1ed4ea5d0cf852e61 (patch)
treeebd1108b62c9a52078051a77371d51a2859661b0
parente381c0366863ae412547e16d67860137a6b89a32 (diff)
downloadmitmproxy-1acaf1c880ba7054e4eb1cc1ed4ea5d0cf852e61.tar.gz
mitmproxy-1acaf1c880ba7054e4eb1cc1ed4ea5d0cf852e61.tar.bz2
mitmproxy-1acaf1c880ba7054e4eb1cc1ed4ea5d0cf852e61.zip
Re-add state operations to ODict.
-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"