Example #1
0
 def test_extract_funcs(self):
     cases = [('g(x)', [('g', 1)]), ('f(g(x))', [('f', 1), ('g', 1)]),
              ('f(g(x)/2, a, b(x, y))', [('f', 3), ('g', 1), ('b', 2)]),
              ('a + g(x)', [('g', 1)]),
              ('a + g(x) + (a + f(x))', [('f', 1), ('g', 1)]),
              ('f(g(1 + h(a))/2) + j(q**k(x)) + q.r[1] + s[1]', [('f', 1),
                                                                 ('g', 1),
                                                                 ('h', 1),
                                                                 ('j', 1),
                                                                 ('k', 1)]),
              ('(g(x) + 2)**f(y)', [('f', 1), ('g', 1)]),
              ('g(x)**f(y)', [('f', 1), ('g', 1)]),
              ('g(x) > f(y)', [('f', 1), ('g', 1)]),
              ('g(x) and f(y)', [('f', 1), ('g', 1)]),
              ('g(x) and not f(y)', [('f', 1), ('g', 1)])]
     for expr, funcs in cases:
         assert ExprManip.extract_funcs(expr) == set(funcs)