Exemple #1
0
def test_function():
    f = Function('f')
    x = Symbol('x')
    e = f(x)
    m = Match(e)
    assert m(f) == True
    assert m.type(FunctionClass) == True
Exemple #2
0
def test_nested():
    x = Symbol('x')
    y = Symbol('y')
    m = Match(x-y)
    v = AutoVar()
    assert m(Add, (Mul, S.NegativeOne, v.e1), v.e2) == True
    assert v.e1 == y
    assert v.e2 == x
Exemple #3
0
def test_Add():
    x = Symbol('x')
    y = Symbol('y')
    m = Match(x+y)
    assert m(Add) == True
    v = AutoVar()
    assert m(Add, v.e1, v.e2) == True
    assert v.e1 == x or  v.e1 == y
    assert v.e2 == x or  v.e2 == y
    def __call__(self,e):
        v = AutoVar()
        m = Match(e)

        #if m(self.old):
        if m.type(FunctionClass):
            if type(e) == self.old:
                arg = self.new.lhs.args[0] 
                return self.new.rhs.subs(arg, e.args[0])

        if (len(e.args)) == 0:
            return e

        arg = e.args
        new_args = []
        for a in arg:
            other = self(a)
            new_args.append(other)
        r = e.func(*new_args)
        return r
Exemple #5
0
def test_empty():
    m = Match(None)
    assert m(Add) == False
Exemple #6
0
def test_values():
    m = Match(Integer(1))
    assert m(Integer) == True
    m2 = Match(Float(2.1))
    assert m2(Float) == True
Exemple #7
0
def test_singleton():
    e = Integer(1)/2
    m = Match(e)
    assert m.exact(S.Half) == True
Exemple #8
0
def test_numbers():
    e = numbers.pi
    m = Match(e)
    assert m(numbers.Pi) == True