import unittest | |
class TestHashing(object): | |
"""Used as a mixin for TestCase""" | |
# Check for a valid __hash__ implementation | |
def test_hash(self): | |
for obj_1, obj_2 in self.eq_pairs: | |
try: | |
if not hash(obj_1) == hash(obj_2): | |
self.fail("%r and %r do not hash equal" % (obj_1, obj_2)) | |
except KeyboardInterrupt: | |
raise | |
except Exception, e: | |
self.fail("Problem hashing %r and %r: %s" % (obj_1, obj_2, e)) | |
for obj_1, obj_2 in self.ne_pairs: | |
try: | |
if hash(obj_1) == hash(obj_2): | |
self.fail("%s and %s hash equal, but shouldn't" % | |
(obj_1, obj_2)) | |
except KeyboardInterrupt: | |
raise | |
except Exception, e: | |
self.fail("Problem hashing %s and %s: %s" % (obj_1, obj_2, e)) | |
class TestEquality(object): | |
"""Used as a mixin for TestCase""" | |
# Check for a valid __eq__ implementation | |
def test_eq(self): | |
for obj_1, obj_2 in self.eq_pairs: | |
self.assertEqual(obj_1, obj_2) | |
self.assertEqual(obj_2, obj_1) | |
# Check for a valid __ne__ implementation | |
def test_ne(self): | |
for obj_1, obj_2 in self.ne_pairs: | |
self.assertNotEqual(obj_1, obj_2) | |
self.assertNotEqual(obj_2, obj_1) | |
class LoggingResult(unittest.TestResult): | |
def __init__(self, log): | |
self._events = log | |
super(LoggingResult, self).__init__() | |
def startTest(self, test): | |
self._events.append('startTest') | |
super(LoggingResult, self).startTest(test) | |
def startTestRun(self): | |
self._events.append('startTestRun') | |
super(LoggingResult, self).startTestRun() | |
def stopTest(self, test): | |
self._events.append('stopTest') | |
super(LoggingResult, self).stopTest(test) | |
def stopTestRun(self): | |
self._events.append('stopTestRun') | |
super(LoggingResult, self).stopTestRun() | |
def addFailure(self, *args): | |
self._events.append('addFailure') | |
super(LoggingResult, self).addFailure(*args) | |
def addSuccess(self, *args): | |
self._events.append('addSuccess') | |
super(LoggingResult, self).addSuccess(*args) | |
def addError(self, *args): | |
self._events.append('addError') | |
super(LoggingResult, self).addError(*args) | |
def addSkip(self, *args): | |
self._events.append('addSkip') | |
super(LoggingResult, self).addSkip(*args) | |
def addExpectedFailure(self, *args): | |
self._events.append('addExpectedFailure') | |
super(LoggingResult, self).addExpectedFailure(*args) | |
def addUnexpectedSuccess(self, *args): | |
self._events.append('addUnexpectedSuccess') | |
super(LoggingResult, self).addUnexpectedSuccess(*args) | |
class ResultWithNoStartTestRunStopTestRun(object): | |
"""An object honouring TestResult before startTestRun/stopTestRun.""" | |
def __init__(self): | |
self.failures = [] | |
self.errors = [] | |
self.testsRun = 0 | |
self.skipped = [] | |
self.expectedFailures = [] | |
self.unexpectedSuccesses = [] | |
self.shouldStop = False | |
def startTest(self, test): | |
pass | |
def stopTest(self, test): | |
pass | |
def addError(self, test): | |
pass | |
def addFailure(self, test): | |
pass | |
def addSuccess(self, test): | |
pass | |
def wasSuccessful(self): | |
return True |