mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 15:41:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			118 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import unittest
 | 
						|
 | 
						|
 | 
						|
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 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 as 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 as e:
 | 
						|
                self.fail("Problem hashing %s and %s: %s" % (obj_1, obj_2, e))
 | 
						|
 | 
						|
 | 
						|
class LoggingResult(unittest.TestResult):
 | 
						|
    def __init__(self, log):
 | 
						|
        self._events = log
 | 
						|
        super().__init__()
 | 
						|
 | 
						|
    def startTest(self, test):
 | 
						|
        self._events.append('startTest')
 | 
						|
        super().startTest(test)
 | 
						|
 | 
						|
    def startTestRun(self):
 | 
						|
        self._events.append('startTestRun')
 | 
						|
        super(LoggingResult, self).startTestRun()
 | 
						|
 | 
						|
    def stopTest(self, test):
 | 
						|
        self._events.append('stopTest')
 | 
						|
        super().stopTest(test)
 | 
						|
 | 
						|
    def stopTestRun(self):
 | 
						|
        self._events.append('stopTestRun')
 | 
						|
        super(LoggingResult, self).stopTestRun()
 | 
						|
 | 
						|
    def addFailure(self, *args):
 | 
						|
        self._events.append('addFailure')
 | 
						|
        super().addFailure(*args)
 | 
						|
 | 
						|
    def addSuccess(self, *args):
 | 
						|
        self._events.append('addSuccess')
 | 
						|
        super(LoggingResult, self).addSuccess(*args)
 | 
						|
 | 
						|
    def addError(self, *args):
 | 
						|
        self._events.append('addError')
 | 
						|
        super().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
 |