1 # -*- coding: utf-8 -*-
2 # pylint: disable=E1101
6 from ..utils
import get_arg
, inject_args
9 class TestUtils(unittest
.TestCase
):
10 def test_inject_args_curries_arguments(self
):
11 fn
= inject_args(lambda a
=None, b
=None: a
+b
, a
=3, b
=5)
12 self
.assertEqual(fn(), 8)
14 def test_inject_args_doesnt_add_arg_if_not_needed(self
):
15 fn
= inject_args(lambda: 7, a
=1, b
=2)
16 self
.assertEqual(fn(), 7)
17 fn
= inject_args(lambda a
=None: a
, b
=2)
18 self
.assertEqual(fn(1), 1)
20 def test_inject_args_knows_how_to_handle_arg_order(self
):
21 fn
= inject_args(lambda a
=None, b
=None: b
- a
, a
=3)
22 self
.assertEqual(fn(b
=4), 1)
23 fn
= inject_args(lambda b
=None, a
=None: b
- a
, a
=3)
24 self
.assertEqual(fn(b
=4), 1)
26 def test_inject_args_works_as_decorator(self
):
27 fn
= inject_args(x
=1)(lambda x
=None: x
)
28 self
.assertEqual(fn(), 1)
30 def test_get_arg__positional(self
):
34 x
= get_arg('x', _fn
, (1, 3, 4), {})
35 self
.assertEqual(x
, 1)
36 y
= get_arg('y', _fn
, (1, 3, 4), {})
37 self
.assertEqual(y
, 3)
38 z
= get_arg('z', _fn
, (1, 3, 4), {})
39 self
.assertEqual(z
, 4)
41 def test_get_arg__keyword(self
):
45 z
= get_arg('z', _fn
, (1, 2), {'z': 3})
46 self
.assertEqual(z
, 3)
49 if __name__
== '__main__':