Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

283 Zeilen
7.5 KiB

  1. #include "AutomatedTestReport.h"
  2. #include "GlobalDefine.h"
  3. CAutomatedTestReport::CAutomatedTestReport(QObject *parent) :
  4. QObject(parent)
  5. {
  6. }
  7. int CAutomatedTestReport::ClearAutomatedTestReport()
  8. {
  9. mTestPinsResult.clear();
  10. mPinCount = 0;
  11. mPreTestResult = AUTO_TEST_RESULT_UNKNOWN;
  12. return RET_OK;
  13. }
  14. int CAutomatedTestReport::SetPinCount(int Pincount)
  15. {
  16. mPinCount = Pincount;
  17. mTestPinsResult.clear();
  18. for(int i = 0; i < Pincount; i++)
  19. {
  20. mTestPinsResult.append(CPinTestResult(i+1));
  21. }
  22. return RET_OK;
  23. }
  24. int CAutomatedTestReport::SetPinResult(int PinNumber, bool ContinuityPassed, bool IsolationPassed)
  25. {
  26. int ZeroBasedPinIndex = PinNumber - 1;
  27. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  28. {
  29. return RET_ERROR;
  30. }
  31. mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass = IsolationPassed;
  32. mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass = ContinuityPassed;
  33. return RET_OK;
  34. }
  35. int CAutomatedTestReport::SetPinTestAllPassed(int PinNumber)
  36. {
  37. int ZeroBasedPinIndex = PinNumber - 1;
  38. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  39. {
  40. return RET_ERROR;
  41. }
  42. mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass = true;
  43. mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass = true;
  44. mTestPinsResult[ZeroBasedPinIndex].mPinAssignationTestPass = true;
  45. return RET_OK;
  46. }
  47. int CAutomatedTestReport::SetPinContinuityResult(int PinNumber,bool ContinuityPassed)
  48. {
  49. int ZeroBasedPinIndex = PinNumber - 1;
  50. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  51. {
  52. return RET_ERROR;
  53. }
  54. mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass = ContinuityPassed;
  55. return RET_OK;
  56. }
  57. int CAutomatedTestReport::SetPinIsolationResult(int PinNumber, bool IsolationPassed)
  58. {
  59. int ZeroBasedPinIndex = PinNumber - 1;
  60. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  61. {
  62. return RET_ERROR;
  63. }
  64. mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass = IsolationPassed;
  65. return RET_OK;
  66. }
  67. int CAutomatedTestReport::SetPinConcordanceTestResult(int PinNumber, bool AssignationTestPassed, int WrongPinNbr)
  68. {
  69. int ZeroBasedPinIndex = PinNumber - 1;
  70. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  71. {
  72. return RET_ERROR;
  73. }
  74. mTestPinsResult[ZeroBasedPinIndex].mPinAssignationTestPass = AssignationTestPassed;
  75. if(AssignationTestPassed == false)
  76. {
  77. mTestPinsResult[ZeroBasedPinIndex].mWrongAssignationPinNbr = WrongPinNbr;
  78. }
  79. return RET_OK;
  80. }
  81. int CAutomatedTestReport::SetPinSecondTestResult(int PinNumber, bool SecondTestPassed)
  82. {
  83. int ZeroBasedPinIndex = PinNumber - 1;
  84. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  85. {
  86. return RET_ERROR;
  87. }
  88. mTestPinsResult[ZeroBasedPinIndex].mSecondTestPass = SecondTestPassed;
  89. return RET_OK;
  90. }
  91. int CAutomatedTestReport::AddShortedPinToPinTest(int PinNumber, int ShortedPinNumber)
  92. {
  93. int ZeroBasedPinIndex = PinNumber - 1;
  94. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  95. {
  96. return RET_ERROR;
  97. }
  98. mTestPinsResult[ZeroBasedPinIndex].mShortedPinsList.append(ShortedPinNumber);
  99. return RET_OK;
  100. }
  101. int CAutomatedTestReport::SetPreTestResult(bool PreTestPassed)
  102. {
  103. mPreTestResult = PreTestPassed;
  104. return RET_OK;
  105. }
  106. CPinTestResult::CPinTestResult(int PinNumber)
  107. {
  108. mPinNumber = PinNumber;
  109. mContinuityTestPass = AUTO_TEST_RESULT_UNKNOWN;
  110. mIsolationTestPass = AUTO_TEST_RESULT_UNKNOWN;
  111. mPinAssignationTestPass = AUTO_TEST_RESULT_UNKNOWN;
  112. mSecondTestPass = AUTO_TEST_RESULT_UNKNOWN;
  113. mShortedPinsList.clear();
  114. mWrongAssignationPinNbr = 0;
  115. }
  116. CPinTestResult::~CPinTestResult()
  117. {
  118. mShortedPinsList.clear();
  119. }
  120. bool CPinTestResult::IsPinTestSuccess()
  121. {
  122. if(mPinNumber > 0 &&
  123. mContinuityTestPass == AUTO_TEST_SUCCESS &&
  124. mIsolationTestPass == AUTO_TEST_SUCCESS &&
  125. mPinAssignationTestPass == AUTO_TEST_SUCCESS) //TODO: Add 2nd pass result.
  126. {
  127. return true;
  128. }
  129. return false;
  130. }
  131. QString CAutomatedTestReport::GetPinIsolationResult(int PinNumber)
  132. {
  133. int ZeroBasedPinIndex = PinNumber - 1;
  134. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  135. {
  136. return QString("?");
  137. }
  138. if(mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass == AUTO_TEST_RESULT_UNKNOWN)
  139. {
  140. return QString("N/A");
  141. }
  142. else if(mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass == AUTO_TEST_SUCCESS)
  143. {
  144. return QString("Succès");
  145. }
  146. else if(mTestPinsResult[ZeroBasedPinIndex].mIsolationTestPass == AUTO_TEST_FAILED)
  147. {
  148. QString Result("Échec[");
  149. for(int i = 0; i < mTestPinsResult[ZeroBasedPinIndex].mShortedPinsList.size(); i++)
  150. {
  151. Result.append(QString("%1").arg(mTestPinsResult[ZeroBasedPinIndex].mShortedPinsList.at(i)));
  152. if(i != mTestPinsResult[ZeroBasedPinIndex].mShortedPinsList.size() - 1)
  153. {
  154. Result.append(",");
  155. }
  156. }
  157. Result.append("]");
  158. return Result;
  159. }
  160. return QString("?");
  161. }
  162. QString CAutomatedTestReport::GetPinContinuityResult(int PinNumber)
  163. {
  164. int ZeroBasedPinIndex = PinNumber - 1;
  165. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  166. {
  167. return QString("?");
  168. }
  169. if(mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass == AUTO_TEST_RESULT_UNKNOWN)
  170. {
  171. return QString("N/A");
  172. }
  173. else if(mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass == AUTO_TEST_SUCCESS)
  174. {
  175. return QString("Succès");
  176. }
  177. else if(mTestPinsResult[ZeroBasedPinIndex].mContinuityTestPass == AUTO_TEST_FAILED)
  178. {
  179. return QString("Échec");
  180. }
  181. return QString("?");
  182. }
  183. QString CAutomatedTestReport::GetPinConcordanceResult(int PinNumber)
  184. {
  185. int ZeroBasedPinIndex = PinNumber - 1;
  186. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  187. {
  188. return QString("?");
  189. }
  190. if(mTestPinsResult[ZeroBasedPinIndex].mPinAssignationTestPass == AUTO_TEST_RESULT_UNKNOWN)
  191. {
  192. return QString("N/A");
  193. }
  194. else if(mTestPinsResult[ZeroBasedPinIndex].mPinAssignationTestPass == AUTO_TEST_SUCCESS)
  195. {
  196. return QString("Succès");
  197. }
  198. else if(mTestPinsResult[ZeroBasedPinIndex].mPinAssignationTestPass == AUTO_TEST_FAILED)
  199. {
  200. return QString("Échec[%1]").arg(mTestPinsResult[ZeroBasedPinIndex].mWrongAssignationPinNbr);
  201. }
  202. return QString("?");
  203. }
  204. QString CAutomatedTestReport::GetPinSecondTestResult(int PinNumber)
  205. {
  206. int ZeroBasedPinIndex = PinNumber - 1;
  207. if(ZeroBasedPinIndex < 0 || ZeroBasedPinIndex >= mPinCount) //Try not to crash.
  208. {
  209. return QString("?");
  210. }
  211. if(mTestPinsResult[ZeroBasedPinIndex].mSecondTestPass == AUTO_TEST_RESULT_UNKNOWN)
  212. {
  213. return QString("N/A");
  214. }
  215. else if(mTestPinsResult[ZeroBasedPinIndex].mSecondTestPass == AUTO_TEST_SUCCESS)
  216. {
  217. return QString("Succès");
  218. }
  219. else if(mTestPinsResult[ZeroBasedPinIndex].mSecondTestPass == AUTO_TEST_FAILED)
  220. {
  221. return QString("Échec");
  222. }
  223. return QString("?");
  224. }
  225. bool CAutomatedTestReport::IsAutomatedTestSuccess()
  226. {
  227. if(mPinCount == 0)
  228. {
  229. return false;
  230. }
  231. for(int i = 0; i < mTestPinsResult.size(); i++)
  232. {
  233. if(mTestPinsResult[i].IsPinTestSuccess() == false)
  234. {
  235. return false;
  236. }
  237. }
  238. return true;
  239. }