import _pickle
from argparse import Namespace
from rpxdock.util import Bunch
[docs]def test_bunch_pickle(tmpdir):
x = Bunch(dict(a=2, b="bee"))
x.c = "see"
with open(tmpdir + "/foo", "wb") as out:
_pickle.dump(x, out)
with open(tmpdir + "/foo", "rb") as inp:
y = _pickle.load(inp)
assert x == y
assert y.a == 2
assert y.b == "bee"
assert y.c == "see"
[docs]def test_bunch_init():
b = Bunch(dict(a=2, b="bee"))
b2 = Bunch(b)
b3 = Bunch(c=3, d="dee", **b)
assert b.a == 2
assert b.b == "bee"
assert b.missing is None
assert b.a == 2
assert b.b == "bee"
assert b.missing is None
assert b3.a == 2
assert b3.b == "bee"
assert b3.missing is None
assert b3.c is 3
assert b3.d is "dee"
foo = Namespace(a=1, b='c')
b = Bunch(foo)
assert b.a == 1
assert b.b == 'c'
assert b.missing is None
[docs]def test_bunch_sub():
b = Bunch(dict(a=2, b="bee"))
assert b.b == "bee"
b2 = b.sub(b="bar")
assert b2.b == "bar"
b3 = b.sub({"a": 4, "d": "dee"})
assert b3.a == 4
assert b3.b == "bee"
assert b3.d == "dee"
assert b3.foobar is None
assert 'a' in b
b4 = b.sub(a=None)
assert not 'a' in b4
assert 'b' in b4
[docs]def test_bunch_items():
b = Bunch(dict(item='item'))
b.attr = 'attr'
assert len(list(b.items())) == 2
assert list(b) == ['item', 'attr']
assert list(b.keys()) == ['item', 'attr']
assert list(b.values()) == ['item', 'attr']
if __name__ == "__main__":
from tempfile import mkdtemp
test_bunch_pickle(mkdtemp())
test_bunch_init()
test_bunch_sub()
test_bunch_items()