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