9fd71cf08d3079e27c2d570b04f5176c1519ea27
1 # -*- coding: utf-8 -*-
2 # pylint: disable=E1101
13 class TestUtils(unittest
.TestCase
):
14 def test_inject_args_curries_arguments(self
):
15 fn
= inject_args(lambda a
=None, b
=None: a
+ b
, a
=3, b
=5)
16 self
.assertEqual(fn(), 8)
18 def test_inject_args_doesnt_add_arg_if_not_needed(self
):
19 fn
= inject_args(lambda: 7, a
=1, b
=2)
20 self
.assertEqual(fn(), 7)
21 fn
= inject_args(lambda a
=None: a
, b
=2)
22 self
.assertEqual(fn(1), 1)
24 def test_inject_args_knows_how_to_handle_arg_order(self
):
25 fn
= inject_args(lambda a
=None, b
=None: b
- a
, a
=3)
26 self
.assertEqual(fn(b
=4), 1)
27 fn
= inject_args(lambda b
=None, a
=None: b
- a
, a
=3)
28 self
.assertEqual(fn(b
=4), 1)
30 def test_inject_args_works_as_decorator(self
):
31 fn
= inject_args(x
=1)(lambda x
=None: x
)
32 self
.assertEqual(fn(), 1)
34 def test_get_arg__positional(self
):
38 x
= get_arg("x", _fn
, (1, 3, 4), {})
39 self
.assertEqual(x
, 1)
40 y
= get_arg("y", _fn
, (1, 3, 4), {})
41 self
.assertEqual(y
, 3)
42 z
= get_arg("z", _fn
, (1, 3, 4), {})
43 self
.assertEqual(z
, 4)
45 def test_get_arg__keyword(self
):
49 z
= get_arg("z", _fn
, (1, 2), {"z": 3})
50 self
.assertEqual(z
, 3)
54 def test_remove_extra_items__keep_aditional_properties(self
):
62 "properties": {"b": "string"},
64 "additionalProperties": True,
69 example
= {"a": {"b": 1, "c": 2}, "d": 3}
70 deleted
= remove_extra_items(example
, schema
)
71 self
.assertIn("d", deleted
)
72 self
.assertIs(example
.get("d"), None)
73 self
.assertEqual(example
["a"]["c"], 2)
76 if __name__
== "__main__":