home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.0 (the "NPL"); you may not use this file except in
- * compliance with the NPL. You may obtain a copy of the NPL at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the NPL is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
- * for the specific language governing rights and limitations under the
- * NPL.
- *
- * The Initial Developer of this code under the NPL is Netscape
- * Communications Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All Rights
- * Reserved.
- */
-
- #include "stdafx.h"
- #include "testcase.h"
- #include "resource.h"
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
-
- // global variable to access Testcase
- extern CTestCase QA_TestCase;
-
- // Assigns sTestID, sLogFile and sStartTime
- CTestCase::CTestCase(CTestCaseManager *tc)
- {
-
- CFile fFile;
- m_sTestID = tc->GetTestCaseName();
-
- m_TCManager = tc;
- CString sDataPath = tc->m_sDataPath;
-
-
- m_sBaseFile = (CString)(sDataPath + m_sTestID + ".bas");
- m_sResultFile = (CString)(sDataPath + m_sTestID + ".ran");
- m_sBeakerFile = "c:\\harness.log"; // DOS and Windows only path format
-
-
- // if BaseLine File doesn't exist then log run to a .bas file instead of a .log file
- if (!m_TCManager->FileExists(m_sBaseFile))
- {
- m_sLogFile = m_sBaseFile;
- m_bCreateBaseLine = TRUE;
- }
- else
- {
- m_sLogFile = (CString)(sDataPath + m_sTestID + ".log");
- // remove previous log file
- if (m_TCManager->FileExists(m_sLogFile))
- {
- CFile fFile;
- fFile.Remove(m_sLogFile);
- }
- m_bCreateBaseLine = FALSE;
- }
-
-
- // remove .ran file
- if (m_TCManager->FileExists(m_sResultFile))
- fFile.Remove(m_sResultFile);
-
- // create .ran file
- fFile.Open(m_sResultFile,CFile::modeCreate | CFile::shareDenyNone);
- fFile.Close();
-
- fFile.Open(m_sLogFile,CFile::modeCreate | CFile::shareDenyNone);
- fFile.Close();
-
- // create c:\harness.log file
- fFile.Open(m_sBeakerFile,CFile::modeCreate | CFile::shareDenyNone);
- fFile.Close();
-
-
- // Log Clock
- char tmpbuf[128];
-
- _strdate( tmpbuf );
- m_sStartTimeString = (CString)((CString)"Start Date/Time: " + tmpbuf + " ");
- m_sStartDate = (CString)(tmpbuf);
-
- _strtime( tmpbuf );
- m_sStartTimeString += (CString)(tmpbuf);
- m_sStartTime = (CString)(tmpbuf);
-
- m_sExpectedResults = " ";
- m_sActualResults = "Some Error";
-
- // Log a header at the Top of the (.all) file
- CString sHeader = "\n++Testcase : " + m_sTestID;
- m_TCManager->PrintToFile(sHeader);
-
- PhaseTwoIsFalse(); // added by par
- m_bFileCompareResult = FALSE; // added by par
- }
-
-
- CTestCase::~CTestCase()
- {
- // release memory
- m_sTestID.Empty();
- m_sBaseFile.Empty();
- m_sLogFile.Empty();
- m_sResultFile.Empty();
- m_sStartDate.Empty();
- m_sStartTime.Empty();
- m_sStartTimeString.Empty();
- m_sEndTime.Empty();
- m_sEndTimeString.Empty();
- m_sManualResult.Empty();
- }
-
-
- // Compares two log files.
- // returns result.
-
- void CTestCase::LogResult()
- {
- CStdioFile fResultFile;
- CString sResult;
-
- // check if creating baseline or there was an actual compare
- if (!m_bCreateBaseLine)
- sResult = "File Compare Result: " + (m_bFileCompareResult ? "PASS" : "*** FAILED - Check "+ m_sLogFile);
- else
- sResult = "Created BaseLine File - " + m_sBaseFile;
-
- if (m_bPhaseTwoResult) // TRUE
- sResult = sResult + "\n" + "Phase Two Result: PASS";
- else
- sResult = sResult + "\n" + "Phase Two Result: FAIL";
-
- if (!m_bCreateBaseLine)
- {
- if (m_bFileCompareResult && m_bPhaseTwoResult) {
- sResult = sResult + "\n" + "Overall Test Result: PASS";
- m_bOverallResult = TRUE;
- } else {
- sResult = sResult + "\n" + "Overall Test Result: FAIL";
- m_bOverallResult = FALSE;
- }
- }
- else
- sResult = sResult + "\n" + "Overall Test Result: N/A";
-
- // Print Result to files (.ran)
- PrintToFile(m_sResultFile,sResult);
-
- // (.all)
- m_TCManager->PrintToFile(sResult);
-
- // Print Times to files (.ran)
- CString sTimes = m_sStartTimeString + "\n" + m_sEndTimeString;
- PrintToFile(m_sResultFile,sTimes);
-
- // (.all)
- m_TCManager->PrintToFile(sTimes);
-
-
- }
-
- // Compares 2 files one line at a time.
- BOOL CTestCase::FileCompare()
- {
- BOOL bResult=FALSE;
- CStdioFile fBase, fCompare;
- CString sLine_Base, sLine_Comp;
-
- if (m_TCManager->FileExists(m_sLogFile))
- {
- if (fBase.Open((LPCTSTR)m_sBaseFile,CFile::modeRead) && \
- fCompare.Open((LPCTSTR)m_sLogFile, CFile::modeRead))
- {
- // verify line at a time
- while (fBase.ReadString(sLine_Base) && fCompare.ReadString(sLine_Comp) && bResult)
- bResult = (sLine_Base.Compare(sLine_Comp) == 0 ? 1 : 0);
-
- fBase.Close();
- fCompare.Close();
- bResult = TRUE;
- }
- }
-
- return bResult;
- }
-
- void CTestCase::QA_Trace(CString msg)
- {
- // write to Log File (.bas if doesn't exist, otherwise .log)
- PrintToFile(m_sLogFile,msg);
- }
-
- void CTestCase::QA_LogError(CString msg)
- {
- // write to Overall File (.all)
- m_TCManager->PrintToFile(msg);
-
- // write to Testcase Result File (.ran)
- PrintToFile(m_sResultFile, msg);
- }
-
- void CTestCase::WrapUp()
- {
- //Log End Time
- char tmpbuf[128];
-
- _strdate( tmpbuf );
- m_sEndTimeString = (CString)((CString)"End Date/Time: " + tmpbuf + " ");
- m_sEndDate = (CString)(tmpbuf);
-
- _strtime( tmpbuf );
- m_sEndTimeString += (CString)(tmpbuf);
- m_sEndTime = (CString)(tmpbuf);
-
-
- if (!m_bCreateBaseLine)
- m_bFileCompareResult = FileCompare();
-
- LogResult();
- LogBeakerResult(); // new
- }
-
- void CTestCase::PrintToFile(CString& sFile, CString& str)
- {
- CStdioFile fFile;
-
- if (fFile.Open(sFile, CFile::modeWrite | CFile::shareDenyNone))
- {
- fFile.Seek(0, CFile::end);
- // write to Testcase Log File
- fFile.WriteString(str + "\n");
- fFile.Flush();
- fFile.Close();
- }
- }
-
- void CTestCase::LogBeakerResult()
- {
- // Offical Beaker format is
- // (machine), -pass-, Test_case_Name/Beaker, Test_Case_Name, Date, Time Start, Time End, Expected Results, Actual Results
-
- CStdioFile fResultFile;
- CString sResult;
-
- sResult = "(local), "; // standard
-
- // check if creating baseline or there was an actual compare
- if (!m_bOverallResult)
- sResult = sResult + "*FAIL*, ";
- else
- sResult = sResult + "-pass-, ";
-
- CString TestCaseName = m_TCManager->GetTestCaseName();
- sResult = sResult + (LPCTSTR) TestCaseName + "\\Beaker, ";
- sResult = sResult + (LPCTSTR) TestCaseName + ", ";
-
- // log the date
- char tmpbuf[128];
- _strdate( tmpbuf );
- CString TodayDate = (CString)(tmpbuf);
-
- sResult = sResult + m_sStartDate + ", " + m_sStartTime + ", " + m_sEndTime + ", ";
-
-
-
- if (!m_bOverallResult) {
- sResult = sResult + m_sExpectedResults + ", ";
- sResult = sResult + m_sActualResults;
- } else {
- // do nothing as no need to post actual results
- sResult = sResult + ", ";
- }
-
- // Print Result to Beaker file (harness.log)
- PrintToFile(m_sBeakerFile,sResult);
- }
-
-