TestExpression: Base class for all tests. The test function returns a boolean and a comment. If the test function returns True/False, the answer is good/bad and the processing stops. If it returns None, then the next test is computed.