Esempio n. 1
0
    def test_arguments(self):
        def f(a, x=2, *b, c=0, **d):
            pass

        f = get_def_ast(f)
        self.assertEqual(''.join(Lambdifier().visit_arguments(f.args)),
                         ' a, x=2, *b, c=0, **d')
Esempio n. 2
0
    def test_return(self):
        def f():
            return 42

        self.assertEqual(
            Lambdifier()(f), 'lambda: [_result for _result in [None] ' +
            'for _result in [42]][0]')
Esempio n. 3
0
    def test_assign(self):
        def f():
            x = 42
            return x

        self.assertEqual(
            Lambdifier()(f), 'lambda: [_result for _result in [None]' +
            ' for x in [42]' + ' for _result in [x]' + '][0]')
Esempio n. 4
0
    def test_for2(self):
        def f():
            for j in [0]:
                for i in range(1):
                    pass

        source = Lambdifier()(f)
        l = eval(source)
        self.assertEqual(l(), f())
Esempio n. 5
0
    def test_for(self):
        def f(a):
            for i in [0]:
                a = i
            return a

        source = Lambdifier()(f)
        l = eval(source)
        self.assertEqual(l(1), f(1))
Esempio n. 6
0
    def test_if2(self):
        def f(a):
            x = 0
            if a:
                x = x + 1
            return x

        source = Lambdifier()(f)
        l = eval(source)
        self.assertEqual(l(1), f(1))
        self.assertEqual(l(0), f(0))
Esempio n. 7
0
    def test_if(self):
        def f(a):
            x = 0
            y = 0
            if a:
                x = 42
            else:
                y = 42
            return x

        source = Lambdifier()(f)
        l = eval(source)
        self.assertEqual(l(1), f(1))
        self.assertEqual(l(0), f(0))
        self.assertEqual(
            source, 'lambda a: [_result' + ' for (a,) in [(a,)]' +
            ' for _result in [None]' + ' for x in [0]' + ' for y in [0]' +
            ' for (x, y) in (' + '[(x, y) for x in [42]]' + ' if a else ' +
            '[(x, y) for y in [42]]' + ')' + ' for _result in [x]' + '][0]')
Esempio n. 8
0
    def test_fib(self):
        def fib(n):
            a, b, c = 0, 1, 1
            for i in range(n):
                a, b, c = b, c, b + c
            return a

        self.assertEqual(fib(5), 5)
        self.assertEqual(fib(6), 8)
        source = Lambdifier()(fib)
        self.assertEqual(
            source, 'lambda n: [_result' + ' for (n,) in [(n,)]' +
            ' for _result in [None]' + ' for _foldl in [%s]' % foldl +
            ' for (a, b, c) in [(0, 1, 1)]' +
            ' for (a, b, c) in [_foldl(lambda a, b, c, i:' + ' [(a, b, c)' +
            ' for (b, c) in [(b, c)]' +
            ' for (a, b, c) in [(b, c, b + c)]][0],' +
            ' (None, b, c), range(n))]' + ' for _result in [a]' + '][0]')
        l = eval(source)
        self.assertEqual(l(5), 5)
        self.assertEqual(l(6), 8)
Esempio n. 9
0
 def test_kmeans(self):
     l = Lambdifier()(kmeans)
     kmeans2 = eval(l)
     self.assertEqual(kmeans([1, 2, 6, 7], 2), kmeans2([1, 2, 6, 7], 2))