示例#1
0
    def test_varargs(self):
        ''' varargs only, can't work '''
        def f4(*args):
            pass

        with raises(ValueError):
            fix_args(f4, x=0)
示例#2
0
    def test_noargs(self):
        ''' no arguments. can't work '''
        def f3():
            pass

        with raises(ValueError):
            fix_args(f3, x=0)
示例#3
0
    def test_defaults(self):
        ''' positional args with defaults '''
        def f2(x, y=1):
            return x, y

        f2_a = fix_args(f2, x=0)
        as_a = ArgSpec(['y'], None, None, (1, ))
        assert as_a == getargspec(f2_a)
        assert f2_a() == (0, 1)
        assert f2_a(2) == (0, 2)
        f2_b = fix_args(f2, y=1)
        as_b = ArgSpec(['x'], None, None, None)
        assert as_b == getargspec(f2_b)
        assert f2_b(0) == (0, 1)
示例#4
0
    def test_varargs_kwargs(self):
        ''' varargs and kwargs '''
        def f6(*args, **kwargs):
            return args, kwargs

        f6_a = fix_args(f6, x=0)
        assert getargspec(f6) == getargspec(f6_a)
        assert f6_a(-1, y=1) == ((-1, ), {'x': 0, 'y': 1})
示例#5
0
    def test_mixed(self):
        def f7(x, y=1, *args, **kwargs):
            return x, y, args, kwargs

        f7_a = fix_args(f7, x=0)
        as_a = ArgSpec(['y'], 'args', 'kwargs', (1, ))
        assert as_a == getargspec(f7_a)
        assert f7_a() == (0, 1, (), {})
        assert f7_a(1, 2, z=3) == (0, 1, (2, ), {'z': 3})
示例#6
0
    def test_kwargs(self):
        ''' kwargs only '''
        def f5(**kwargs):
            return kwargs

        f5_a = fix_args(f5, x=0)
        assert getargspec(f5) == getargspec(f5_a)
        assert f5_a() == {'x': 0}
        assert f5_a(y=1) == {'x': 0, 'y': 1}
示例#7
0
    def test_posargs(self):
        ''' positional args only '''
        def f1(x, y):
            return x, y

        f1_a = fix_args(f1, x=0)
        as_a = ArgSpec(['y'], None, None, None)
        assert as_a == getargspec(f1_a)
        assert f1_a(1) == (0, 1)
        f1_b = fix_args(f1, y=1)
        as_b = ArgSpec(['x'], None, None, None)
        assert as_b == getargspec(f1_b)
        assert f1_b(0) == (0, 1)
        f1_c = fix_args(f1, x=0, y=1)
        as_c = ArgSpec([], None, None, None)
        assert as_c == getargspec(f1_c)
        assert f1_c() == (0, 1)
        with raises(ValueError):
            fix_args(f1, z=2)
示例#8
0
    def test_boundmethod(self):
        class C8:
            def f(self, x, y=1, *args, **kwargs):
                return x, y, args, kwargs

        c8 = C8()
        c8.f_a = fix_args(c8.f, x=0)
        as_a = ArgSpec(['y'], 'args', 'kwargs', (1, ))
        assert as_a == getargspec(c8.f_a)
        assert c8.f_a() == (0, 1, (), {})
        assert c8.f_a(1, 2, z=3) == (0, 1, (2, ), {'z': 3})