예제 #1
0
    def testNullary(self):
        class Unary(object):
            def __call__(self):
                pass

        cb = Unary()

        def f():
            pass

        assert 0 == functionargs(cb)
        assert 0 == functionargs(f)
예제 #2
0
    def testUnaryFunction(self):
        class Unary(object):
            def __call__(self, a):
                pass

        cb = Unary()

        def f(a):
            pass

        assert 1 == functionargs(cb)
        assert 1 == functionargs(f)
예제 #3
0
    def testBinaryFunction(self):
        class Binary(object):
            def __call__(self, a, b):
                pass

        cb = Binary()

        def f(a, b):
            pass

        assert 2 == functionargs(cb)
        assert 2 == functionargs(f)
예제 #4
0
    def testManyArguments(self):
        class Many(object):
            def __call__(self, a, b, c, d, e, f, g):
                pass

        cb = Many()

        def f(a, b, c, d, e, f, g):
            pass

        assert 7 == functionargs(cb)
        assert 7 == functionargs(f)
예제 #5
0
    def testVarArgs(self):
        class VarArg(object):
            def __call__(self, *args):
                pass

        cb = VarArg()

        def f(*args):
            pass

        assert -1 == functionargs(cb)
        assert -1 == functionargs(f)
예제 #6
0
    def testFunctoolsPartial(self):
        import functools

        def f(a, b, c):
            return 2 * a + 3 * b + c

        p = functools.partial(f, 1, 2)
        assert 1 == functionargs(p)
예제 #7
0
    def testNotFunc(self):
        """Test for bad functions"""

        with self.assertRaises(TypeError):
            functionargs(None)

        with self.assertRaises(TypeError):
            functionargs(1.0)

        with self.assertRaises(TypeError):
            functionargs("a")

        with self.assertRaises(TypeError):
            functionargs(object())

        with self.assertRaises(TypeError):
            functionargs(sum)