import hashlib class TestFailure(Exception): pass class PrivateTestFailure(Exception): pass class Test(object): passed = 0 numTests = 0 failFast = False private = False @classmethod def setFailFast(cls): cls.failFast = True @classmethod def setPrivateMode(cls): cls.private = True @classmethod def assertTrue(cls, result, msg=""): cls.numTests += 1 if result == True: cls.passed += 1 print ("1 test passed.") else: print ("1 test failed. " + msg) if cls.failFast: if cls.private: raise PrivateTestFailure(msg) else: raise TestFailure(msg) @classmethod def assertEquals(cls, var, val, msg=""): cls.assertTrue(var == val, msg) @classmethod def assertEqualsHashed(cls, var, hashed_val, msg=""): cls.assertEquals(cls._hash(var), hashed_val, msg) @classmethod def printStats(cls): print ("{0} / {1} test(s) passed.".format(cls.passed, cls.numTests)) @classmethod def _hash(cls, x): return hashlib.sha1(str(x)).hexdigest()