Exemplo n.º 1
0
def test_mul_dispatcher():
    class NewBase(Expr):
        @property
        def _mul_handler(self):
            return NewMul

    class NewMul(NewBase, Mul):
        pass

    mul.register_handlerclass((Mul, NewMul), NewMul)

    a, b = Symbol('a'), NewBase()

    # Mul called as fallback
    assert mul(1, 2) == Mul(1, 2)
    assert mul(a, a) == Mul(a, a)

    # selection by registered priority
    assert mul(a, b, a) == NewMul(a**2, b)
Exemplo n.º 2
0
def test_construction_with_mul():
    assert mul(C, D) == MatMul(C, D)
    assert mul(D, C) == MatMul(D, C)
    assert mul(C, D) != MatMul(D, C)