|
| 1 | +""" Test kw_only decorators """ |
| 2 | + |
| 3 | +from ..keywordonly import kw_only_func, kw_only_meth |
| 4 | + |
| 5 | +from nose.tools import assert_equal |
| 6 | +from nose.tools import assert_raises |
| 7 | + |
| 8 | + |
| 9 | +def test_kw_only_func(): |
| 10 | + # Test decorator |
| 11 | + def func(an_arg): |
| 12 | + "My docstring" |
| 13 | + return an_arg |
| 14 | + assert_equal(func(1), 1) |
| 15 | + assert_raises(TypeError, func, 1, 2) |
| 16 | + dec_func = kw_only_func(1)(func) |
| 17 | + assert_equal(dec_func(1), 1) |
| 18 | + assert_raises(TypeError, dec_func, 1, 2) |
| 19 | + assert_raises(TypeError, dec_func, 1, akeyarg=3) |
| 20 | + assert_equal(dec_func.__doc__, 'My docstring') |
| 21 | + |
| 22 | + @kw_only_func(1) |
| 23 | + def kw_func(an_arg, a_kwarg='thing'): |
| 24 | + "Another docstring" |
| 25 | + return an_arg, a_kwarg |
| 26 | + assert_equal(kw_func(1), (1, 'thing')) |
| 27 | + assert_raises(TypeError, kw_func, 1, 2) |
| 28 | + assert_equal(kw_func(1, a_kwarg=2), (1, 2)) |
| 29 | + assert_raises(TypeError, kw_func, 1, akeyarg=3) |
| 30 | + assert_equal(kw_func.__doc__, 'Another docstring') |
| 31 | + |
| 32 | + class C(object): |
| 33 | + |
| 34 | + @kw_only_meth(1) |
| 35 | + def kw_meth(self, an_arg, a_kwarg='thing'): |
| 36 | + "Method docstring" |
| 37 | + return an_arg, a_kwarg |
| 38 | + c = C() |
| 39 | + assert_equal(c.kw_meth(1), (1, 'thing')) |
| 40 | + assert_raises(TypeError, c.kw_meth, 1, 2) |
| 41 | + assert_equal(c.kw_meth(1, a_kwarg=2), (1, 2)) |
| 42 | + assert_raises(TypeError, c.kw_meth, 1, akeyarg=3) |
| 43 | + assert_equal(c.kw_meth.__doc__, 'Method docstring') |
0 commit comments