예제 #1
0
class TestReportTestCase(unittest.TestCase):
    """ Some useful asserts for convenience """


    def setUp(self):
        pass


    def tearDown(self):
        pass
    
    def usingReport(self, repStrs):
        csvLines = strToCsvLines(repStrs)
        self.report = Report(csvData = csvLines[1:], csvHeader = csvLines[0])
        
    def __findFuncRecordOfName(self, functionName):
        funcRecords = self.report.funcRecords.values()
        for funcRecord in funcRecords:
            if funcRecord.getRoot().getFunctionName() == functionName:
                funcRecord.getRoot().validateReqFieldsPresent()
                return funcRecord
        return None

    def assertReportHas(self, functionName):
        funcRecord = self.__findFuncRecordOfName(functionName)
        self.assertIsNotNone(funcRecord, "Function name %s not found" % functionName)
        pass
        
    def assertFunctionHasNCallers(self, functionName, N):
        funcRecord = self.__findFuncRecordOfName(functionName)
        self.assertIsNotNone(funcRecord, "Function name %s not found" % functionName)
        self.assertEqual(len(funcRecord.getCallers()), N, 
                         "Function name %s does not have %i callers, instead there are %i" 
                         % (functionName, N, len(funcRecord.getCallers())))
    
    def assertFunctionHasNCallees(self, functionName, N):
        funcRecord = self.__findFuncRecordOfName(functionName)
        self.assertIsNotNone(funcRecord, "Function name %s not found" % functionName)
        self.assertEqual(len(funcRecord.getCallees()), N, 
                         "Function name %s does not have %i callers, instead there are %i" 
                         % (functionName, N, len(funcRecord.getCallees())))
        
    def assertNumFuncRecordsIsN(self, N):
        self.assertEqual(len(self.report.funcRecords), N,
                         "Assertion failed, number of funcRecords not %i instead there are %i" %
                         (N, len(self.report.funcRecords)))
        
    def assertElapdeInclIsN(self, functionName, N):
        funcRecord = self.__findFuncRecordOfName(functionName)
        self.assertEqual(funcRecord.getRoot().getElapsedIncl(), N, 
                         "Elapsed inclusive for root record %s not %lf instead its %lf; entry:%s" %
                         (functionName, N, funcRecord.getRoot().getElapsedIncl(),
                         repr(funcRecord.getRoot().csvEntry.fields)))
        
    def assertElapdeExclIsN(self, functionName, N):
        funcRecord = self.__findFuncRecordOfName(functionName)
        self.assertEqual(funcRecord.getRoot().getElapsedExcl(), N, 
                         "Elapsed exclusive for root record %s not %lf instead its %lf; entry:%s" %
                         (functionName, N, funcRecord.getRoot().getElapsedExcl(), 
                          repr(funcRecord.getRoot().csvEntry.fields)))        
    
    def assertFunctionAtAddress(self, function, address):
        self.assertEqual(self.report.getRecord(address).getRoot().getFunctionName(), function,
                          "Root record %s not found at address %08x" % (function, address))