def test_retrieve_propagates_exception(): dol = {"a": [1, 2], "b": failing_leave, "e": 2} with pytest.raises(Exception): val = retrieve(dol, "b/c/d", default=0) dol = {"a": [1, 2], "b": custom_leave, "e": 2} with pytest.raises(CustomException): val = retrieve(dol, "b/c/d", default=0)
def test_retrieve_fail(): dol = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2} with pytest.raises(Exception): val = retrieve(dol, "f") with pytest.raises(Exception): val = retrieve(dol, "a/4") with pytest.raises(Exception): val = retrieve(dol, "b/c/e")
def test_retrieve_fail_ef_callable(): dol = {"a": [1, 2], "b": callable_leave, "e": 2} with pytest.raises(Exception): val = retrieve(dol, "f", expand=False) with pytest.raises(Exception): val = retrieve(dol, "a/4", expand=False) with pytest.raises(Exception): val = retrieve(dol, "b/c/e", expand=False)
def test_retrieve_fail_ef(): dol = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2} with pytest.raises(Exception): val = retrieve(dol, "f", expand=False) with pytest.raises(Exception): val = retrieve(dol, "a/4", expand=False) with pytest.raises(Exception): val = retrieve(dol, "b/c/e", expand=False)
def test_retrieve_default_ef_callable(): dol = {"a": [1, 2], "b": callable_leave, "e": 2} ref = "abc" val = retrieve(dol, "f", default="abc", expand=False) assert val == ref val = retrieve(dol, "a/4", default="abc", expand=False) assert val == ref val = retrieve(dol, "b/c/e", default="abc", expand=False) assert val == ref
def test_retrieve_default_ef(): dol = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2} ref = "abc" val = retrieve(dol, "f", default="abc", expand=False) assert val == ref val = retrieve(dol, "a/4", default="abc", expand=False) assert val == ref val = retrieve(dol, "b/c/e", default="abc", expand=False) assert val == ref
def test_retrieve_ef_callable(): dol = {"a": [1, 2], "b": callable_leave, "e": 2} val = retrieve(dol, "a", expand=False) ref = [1, 2] assert val == ref val = retrieve(dol, "a/0", expand=False) ref = 1 assert val == ref with pytest.raises(Exception): val = retrieve(dol, "b/c/d", expand=False)
def test_retrieve_ef(): dol = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2} val = retrieve(dol, "a", expand=False) ref = [1, 2] assert val == ref val = retrieve(dol, "a/0", expand=False) ref = 1 assert val == ref val = retrieve(dol, "b/c/d", expand=False) ref = 1 assert val == ref
def test_retrieve(): dol = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2} val = retrieve(dol, "a") ref = [1, 2] assert val == ref val = retrieve(dol, "a/0") ref = 1 assert val == ref val = retrieve(dol, "b/c/d") ref = 1 assert val == ref
def test_retrieve_callable(): dol = {"a": [1, 2], "b": callable_leave, "e": 2} val = retrieve(dol, "a") ref = [1, 2] assert val == ref val = retrieve(dol, "a/0") ref = 1 assert val == ref val = retrieve(dol, "b/c/d") ref = 1 assert val == ref # test in-place modification ref_dol = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2} assert dol == ref_dol
def test_retrieve_callable_leaves(): dol = {"a": [1, 2], "b": callable_leave, "e": 2} val = retrieve(dol, "b") # make sure expansion is returned assert val == callable_leave() # make sure expansion was done in-place assert dol["b"] == callable_leave() dol = {"a": [1, 2], "b": callable_leave, "e": 2} val = retrieve(dol, "b/c") # make sure expansion is returned assert val == nested_leave() # make sure expansion was done in-place assert dol["b"]["c"] == nested_leave() dol = {"a": [1, 2], "b": callable_leave, "e": 2} val = retrieve(dol, "b/c/d") assert val == 1
def test_retrieve_pass_success_fail_ef_callable(): dol = {"a": [1, 2], "b": callable_leave, "e": 2} with pytest.raises(Exception): retrieve(dol, "f", pass_success=True, expand=False) with pytest.raises(Exception): retrieve(dol, "a/4", pass_success=True, expand=False) with pytest.raises(Exception): retrieve(dol, "b/c/e", pass_success=True, expand=False) ref = [1, 2], True val = retrieve(dol, "a", pass_success=True, expand=False) assert val == ref ref = 1, True val = retrieve(dol, "a/0", pass_success=True, expand=False) assert val == ref with pytest.raises(Exception): val = retrieve(dol, "b/c/d", pass_success=True, expand=False)
def test_retrieve_pass_success_fail(): dol = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2} with pytest.raises(Exception): retrieve(dol, "f", pass_success=True) with pytest.raises(Exception): retrieve(dol, "a/4", pass_success=True) with pytest.raises(Exception): retrieve(dol, "b/c/e", pass_success=True) ref = [1, 2], True val = retrieve(dol, "a", pass_success=True) assert val == ref ref = 1, True val = retrieve(dol, "a/0", pass_success=True) assert val == ref ref = 1, True val = retrieve(dol, "b/c/d", pass_success=True) assert val == ref
def test_retrieve_pass_success_ef_callable(): dol = {"a": [1, 2], "b": callable_leave, "e": 2} ref = "abc", False val = retrieve(dol, "f", default="abc", pass_success=True, expand=False) assert val == ref val = retrieve(dol, "a/4", default="abc", pass_success=True, expand=False) assert val == ref val = retrieve(dol, "b/c/e", default="abc", pass_success=True, expand=False) assert val == ref ref = [1, 2], True val = retrieve(dol, "a", default="abc", pass_success=True, expand=False) assert val == ref ref = 1, True val = retrieve(dol, "a/0", default="abc", pass_success=True, expand=False) assert val == ref ref = "abc", False val = retrieve(dol, "b/c/d", default="abc", pass_success=True, expand=False) assert val == ref
def test_retrieve_pass_success(): dol = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2} ref = "abc", False val = retrieve(dol, "f", default="abc", pass_success=True) assert val == ref val = retrieve(dol, "a/4", default="abc", pass_success=True) assert val == ref val = retrieve(dol, "b/c/e", default="abc", pass_success=True) assert val == ref ref = [1, 2], True val = retrieve(dol, "a", default="abc", pass_success=True) assert val == ref ref = 1, True val = retrieve(dol, "a/0", default="abc", pass_success=True) assert val == ref ref = 1, True val = retrieve(dol, "b/c/d", default="abc", pass_success=True) assert val == ref