aboutsummaryrefslogtreecommitdiffstats
path: root/test/netlib/test_multidict.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2016-05-21 11:37:36 +1200
committerAldo Cortesi <aldo@nullcube.com>2016-05-21 11:37:36 +1200
commita5c4cd034081d7dcdbd4b46bd69718edb45d4719 (patch)
tree52accc866d25c735e6c36f05255bb3f5349f8ac7 /test/netlib/test_multidict.py
parent96d8ec1ee33b076a472afc3053fdd8256559fcc3 (diff)
downloadmitmproxy-a5c4cd034081d7dcdbd4b46bd69718edb45d4719.tar.gz
mitmproxy-a5c4cd034081d7dcdbd4b46bd69718edb45d4719.tar.bz2
mitmproxy-a5c4cd034081d7dcdbd4b46bd69718edb45d4719.zip
A clearer implementation of MultiDictView
This makes MultiDictView work with a simple getter/setter pair, rather than using attributes with implicit leading underscores. Also move MultiDictView into multidict.py and adds some simple unit tests.
Diffstat (limited to 'test/netlib/test_multidict.py')
-rw-r--r--test/netlib/test_multidict.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/test/netlib/test_multidict.py b/test/netlib/test_multidict.py
index ceea3806..5bb65e3f 100644
--- a/test/netlib/test_multidict.py
+++ b/test/netlib/test_multidict.py
@@ -1,5 +1,5 @@
from netlib import tutils
-from netlib.multidict import MultiDict, ImmutableMultiDict
+from netlib.multidict import MultiDict, ImmutableMultiDict, MultiDictView
class _TMulti(object):
@@ -214,4 +214,26 @@ class TestImmutableMultiDict(object):
def test_with_insert(self):
md = TImmutableMultiDict()
assert md.with_insert(0, "foo", "bar").fields == (("foo", "bar"),)
- assert md.fields == () \ No newline at end of file
+
+
+class TParent(object):
+ def __init__(self):
+ self.vals = tuple()
+
+ def setter(self, vals):
+ self.vals = vals
+
+ def getter(self):
+ return self.vals
+
+
+class TestMultiDictView(object):
+ def test_modify(self):
+ p = TParent()
+ tv = MultiDictView(p.getter, p.setter)
+ assert len(tv) == 0
+ tv["a"] = "b"
+ assert p.vals == (("a", "b"),)
+ tv["c"] = "b"
+ assert p.vals == (("a", "b"), ("c", "b"))
+ assert tv["a"] == "b"