def test_incompatible_resolutors(): x = symbols('x') class Prime2AskHandler(AskHandler): @staticmethod def Number(expr, assumptions): return True register_handler('prime', Prime2AskHandler) raises(ValueError, 'ask(4, Q.prime)')
def test_key_extensibility(): """test that you can add keys to the ask system at runtime""" x = Symbol('x') # make sure thie key is not defined raises(AttributeError, "ask(x, 'my_key')") class MyAskHandler(AskHandler): @staticmethod def Symbol(expr, assumptions): return True register_handler('my_key', MyAskHandler) assert ask(x, 'my_key') == True assert ask(x+1, 'my_key') == None remove_handler('my_key', MyAskHandler)
def test_incompatible_resolutors(): x = symbols('x') class Prime2AskHandler(AskHandler): @staticmethod def Number(expr, assumptions): return True register_handler('prime', Prime2AskHandler) raises(ValueError, 'ask(4, Q.prime)') remove_handler('prime', Prime2AskHandler) class InconclusiveHandler(AskHandler): @staticmethod def Number(expr, assumptions): return None register_handler('prime', InconclusiveHandler) assert ask(3, Q.prime) == True
def test_type_extensibility(): """test that new types can be added to the ask system at runtime We create a custom type MyType, and override ask Q.prime=True with handler MyAskHandler for this type TODO: test incompatible resolutors """ from sympy.core import Basic class MyType(Basic): pass class MyAskHandler(AskHandler): @staticmethod def MyType(expr, assumptions): return True a = MyType() register_handler(Q.prime, MyAskHandler) assert ask(a, Q.prime) == True