#include "AutomatedTestReport.h" #include "GlobalDefine.h" CAutomatedTestReport::CAutomatedTestReport(QObject *parent) : QObject(parent) { } int CAutomatedTestReport::ClearAutomatedTestReport() { mTestPinsResult.clear(); mPinCount = 0; mPreTestResult = AUTO_TEST_RESULT_UNKNOWN; return RET_OK; } int CAutomatedTestReport::SetPinCount(int Pincount) { mPinCount = Pincount; mTestPinsResult.clear(); for(int i = 0; i < Pincount; i++) { mTestPinsResult.append(CPinTestResult(i+1)); } return RET_OK; } int CAutomatedTestReport::SetPinResult(int PinNumber, bool ContinuityPassed, bool IsolationPassed) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return RET_ERROR; } mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass = IsolationPassed; mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass = ContinuityPassed; return RET_OK; } int CAutomatedTestReport::SetPinTestAllPassed(int PinNumber) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return RET_ERROR; } mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass = true; mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass = true; mTestPinsResult[ZeroBasedPinIndex].mPinAssignationTestPass = true; return RET_OK; } int CAutomatedTestReport::SetPinContinuityResult(int PinNumber,bool ContinuityPassed) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return RET_ERROR; } mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass = ContinuityPassed; return RET_OK; } int CAutomatedTestReport::SetPinIsolationResult(int PinNumber, bool IsolationPassed) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return RET_ERROR; } mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass = IsolationPassed; return RET_OK; } int CAutomatedTestReport::SetPinConcordanceTestResult(int PinNumber, bool AssignationTestPassed, int WrongPinNbr) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return RET_ERROR; } mTestPinsResult[ZeroBasedPinIndex].mPinAssignationTestPass = AssignationTestPassed; if(AssignationTestPassed == false) { mTestPinsResult[ZeroBasedPinIndex].mWrongAssignationPinNbr = WrongPinNbr; } return RET_OK; } int CAutomatedTestReport::SetPinSecondTestResult(int PinNumber, bool SecondTestPassed) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return RET_ERROR; } mTestPinsResult[ZeroBasedPinIndex].mSecondTestPass = SecondTestPassed; return RET_OK; } int CAutomatedTestReport::AddShortedPinToPinTest(int PinNumber, int ShortedPinNumber) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return RET_ERROR; } mTestPinsResult[ZeroBasedPinIndex].mShortedPinsList.append(ShortedPinNumber); return RET_OK; } int CAutomatedTestReport::SetPreTestResult(bool PreTestPassed) { mPreTestResult = PreTestPassed; return RET_OK; } CPinTestResult::CPinTestResult(int PinNumber) { mPinNumber = PinNumber; mContinuityTestPass = AUTO_TEST_RESULT_UNKNOWN; mIsolationTestPass = AUTO_TEST_RESULT_UNKNOWN; mPinAssignationTestPass = AUTO_TEST_RESULT_UNKNOWN; mSecondTestPass = AUTO_TEST_RESULT_UNKNOWN; mShortedPinsList.clear(); mWrongAssignationPinNbr = 0; } CPinTestResult::~CPinTestResult() { mShortedPinsList.clear(); } bool CPinTestResult::IsPinTestSuccess() { if(mPinNumber > 0 && mContinuityTestPass == AUTO_TEST_SUCCESS && mIsolationTestPass == AUTO_TEST_SUCCESS && mPinAssignationTestPass == AUTO_TEST_SUCCESS) //TODO: Add 2nd pass result. { return true; } return false; } QString CAutomatedTestReport::GetPinIsolationResult(int PinNumber) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return QString("?"); } if(mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass == AUTO_TEST_RESULT_UNKNOWN) { return QString("N/A"); } else if(mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass == AUTO_TEST_SUCCESS) { return QString("Succès"); } else if(mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass == AUTO_TEST_FAILED) { QString Result("Échec["); for(int i = 0; i < mTestPinsResult[ZeroBasedPinIndex].mShortedPinsList.size(); i++) { Result.append(QString("%1").arg(mTestPinsResult[ZeroBasedPinIndex].mShortedPinsList.at(i))); if(i != mTestPinsResult[ZeroBasedPinIndex].mShortedPinsList.size() - 1) { Result.append(","); } } Result.append("]"); return Result; } return QString("?"); } QString CAutomatedTestReport::GetPinContinuityResult(int PinNumber) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return QString("?"); } if(mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass == AUTO_TEST_RESULT_UNKNOWN) { return QString("N/A"); } else if(mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass == AUTO_TEST_SUCCESS) { return QString("Succès"); } else if(mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass == AUTO_TEST_FAILED) { return QString("Échec"); } return QString("?"); } QString CAutomatedTestReport::GetPinConcordanceResult(int PinNumber) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return QString("?"); } if(mTestPinsResult[ZeroBasedPinIndex].mPinAssignationTestPass == AUTO_TEST_RESULT_UNKNOWN) { return QString("N/A"); } else if(mTestPinsResult[ZeroBasedPinIndex].mPinAssignationTestPass == AUTO_TEST_SUCCESS) { return QString("Succès"); } else if(mTestPinsResult[ZeroBasedPinIndex].mPinAssignationTestPass == AUTO_TEST_FAILED) { return QString("Échec[%1]").arg(mTestPinsResult[ZeroBasedPinIndex].mWrongAssignationPinNbr); } return QString("?"); } QString CAutomatedTestReport::GetPinSecondTestResult(int PinNumber) { int ZeroBasedPinIndex = PinNumber - 1; if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash. { return QString("?"); } if(mTestPinsResult[ZeroBasedPinIndex].mSecondTestPass == AUTO_TEST_RESULT_UNKNOWN) { return QString("N/A"); } else if(mTestPinsResult[ZeroBasedPinIndex].mSecondTestPass == AUTO_TEST_SUCCESS) { return QString("Succès"); } else if(mTestPinsResult[ZeroBasedPinIndex].mSecondTestPass == AUTO_TEST_FAILED) { return QString("Échec"); } return QString("?"); } bool CAutomatedTestReport::IsAutomatedTestSuccess() { if(mPinCount == 0) { return false; } for(int i = 0; i < mTestPinsResult.size(); i++) { if(mTestPinsResult[i].IsPinTestSuccess() == false) { return false; } } return true; }