diff options
-rw-r--r-- | netlib/odict.py | 10 | ||||
-rw-r--r-- | test/test_odict.py | 9 |
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" |