• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 import unittest
2 
3 
4 class TestHashing(object):
5     """Used as a mixin for TestCase"""
6 
7     # Check for a valid __hash__ implementation
8     def test_hash(self):
9         for obj_1, obj_2 in self.eq_pairs:
10             try:
11                 if not hash(obj_1) == hash(obj_2):
12                     self.fail("%r and %r do not hash equal" % (obj_1, obj_2))
13             except KeyboardInterrupt:
14                 raise
15             except Exception, e:
16                 self.fail("Problem hashing %r and %r: %s" % (obj_1, obj_2, e))
17 
18         for obj_1, obj_2 in self.ne_pairs:
19             try:
20                 if hash(obj_1) == hash(obj_2):
21                     self.fail("%s and %s hash equal, but shouldn't" %
22                               (obj_1, obj_2))
23             except KeyboardInterrupt:
24                 raise
25             except Exception, e:
26                 self.fail("Problem hashing %s and %s: %s" % (obj_1, obj_2, e))
27 
28 
29 class TestEquality(object):
30     """Used as a mixin for TestCase"""
31 
32     # Check for a valid __eq__ implementation
33     def test_eq(self):
34         for obj_1, obj_2 in self.eq_pairs:
35             self.assertEqual(obj_1, obj_2)
36             self.assertEqual(obj_2, obj_1)
37 
38     # Check for a valid __ne__ implementation
39     def test_ne(self):
40         for obj_1, obj_2 in self.ne_pairs:
41             self.assertNotEqual(obj_1, obj_2)
42             self.assertNotEqual(obj_2, obj_1)
43 
44 
45 class LoggingResult(unittest.TestResult):
46     def __init__(self, log):
47         self._events = log
48         super(LoggingResult, self).__init__()
49 
50     def startTest(self, test):
51         self._events.append('startTest')
52         super(LoggingResult, self).startTest(test)
53 
54     def startTestRun(self):
55         self._events.append('startTestRun')
56         super(LoggingResult, self).startTestRun()
57 
58     def stopTest(self, test):
59         self._events.append('stopTest')
60         super(LoggingResult, self).stopTest(test)
61 
62     def stopTestRun(self):
63         self._events.append('stopTestRun')
64         super(LoggingResult, self).stopTestRun()
65 
66     def addFailure(self, *args):
67         self._events.append('addFailure')
68         super(LoggingResult, self).addFailure(*args)
69 
70     def addSuccess(self, *args):
71         self._events.append('addSuccess')
72         super(LoggingResult, self).addSuccess(*args)
73 
74     def addError(self, *args):
75         self._events.append('addError')
76         super(LoggingResult, self).addError(*args)
77 
78     def addSkip(self, *args):
79         self._events.append('addSkip')
80         super(LoggingResult, self).addSkip(*args)
81 
82     def addExpectedFailure(self, *args):
83         self._events.append('addExpectedFailure')
84         super(LoggingResult, self).addExpectedFailure(*args)
85 
86     def addUnexpectedSuccess(self, *args):
87         self._events.append('addUnexpectedSuccess')
88         super(LoggingResult, self).addUnexpectedSuccess(*args)
89 
90 
91 class ResultWithNoStartTestRunStopTestRun(object):
92     """An object honouring TestResult before startTestRun/stopTestRun."""
93 
94     def __init__(self):
95         self.failures = []
96         self.errors = []
97         self.testsRun = 0
98         self.skipped = []
99         self.expectedFailures = []
100         self.unexpectedSuccesses = []
101         self.shouldStop = False
102 
103     def startTest(self, test):
104         pass
105 
106     def stopTest(self, test):
107         pass
108 
109     def addError(self, test):
110         pass
111 
112     def addFailure(self, test):
113         pass
114 
115     def addSuccess(self, test):
116         pass
117 
118     def wasSuccessful(self):
119         return True
120