void CPersistKitList::UnitTest() { CPersistKitList kitList; wxString sError; if(!kitList.Load()) { sError.Append(_T("CPersistKitList::Load() failed\n")); } else { const wxArrayString *psKitArray; const wxArrayString *psArray; psKitArray = &kitList.GetArray(); size_t nCount = psKitArray->GetCount(); #define PP12 _T("PowerPlex 1.2") #define PP18D _T("PowerPlex 18D") #define SGM _T("SGM Plus") #define SEFILER _T("SEfilerPlus") #define NGM _T("NGMSElect") #define PP21 _T("PowerPlex 21") struct { size_t n; // number of loci const wxChar *psName; } LIST[] = { {7, _T("Cofiler")}, {16, _T("Identifiler Less ILS250")}, {16, _T("IdentifilerPlus Less ILS250")}, {16, _T("IdentifilerPlus")}, {16, _T("Identifiler")}, {9, PP12}, {18, PP18D}, {16, _T("PowerPlex 16")}, {11, _T("PowerPlex Y")}, {16, _T("Yfiler")}, {12, SEFILER}, {11, SGM}, {10, _T("ProfilerPlus")}, {17, NGM}, {21,PP21} }; size_t N_LIST = sizeof(LIST) / sizeof(LIST[0]); if(nCount != N_LIST) { sError.Append(wxString::Format( _T("\nNumber of kits is %d, expected %d"), (int)nCount, (int)N_LIST )); } map<wxString,size_t> kitLocusCount; map<wxString,size_t>::iterator itrKL; size_t i; for(i = 0; i < N_LIST; i++) { kitLocusCount.insert( map<wxString,size_t>::value_type( wxString(LIST[i].psName),LIST[i].n)); } for(i = 0; i < nCount; i++) { // verify LS count const wxString &sItem = psKitArray->Item(i); psArray = kitList.GetLsArray(sItem); if(psArray == NULL) { sError.Append(_T("\nCannot find ILS for kit: ")); sError.Append(sItem); } else { size_t nExpected = 4; if(sItem == PP12 || sItem == PP18D || sItem == NGM || sItem == SEFILER || sItem == PP21) { nExpected = 1; } else if(sItem == SGM) { nExpected = 5; } else if( sItem.StartsWith(_T("Identifiler")) && !sItem.Contains(_T("250")) ) { nExpected = 5; } if(psArray->GetCount() != nExpected) { sError.Append( _T("\nLS count for kit: ")); sError.Append(sItem); sError.Append(wxString::Format( _T(", is %d, expected %d"), (int)psArray->GetCount(),(int)nExpected)); } } itrKL = kitLocusCount.find(sItem); const CLocusNameList *pList = kitList.GetLocusNameList(sItem); if(pList == NULL) { sError.Append(_T("\nCannot find loci for kit: ")); sError.Append(sItem); } if(itrKL == kitLocusCount.end()) { sError.Append(_T("\nUnknown kit name: ")); sError.Append(sItem); } else if( (pList != NULL) && (pList->size() != itrKL->second) ) { sError.Append(_T("\nLocus count for kit: ")); sError.Append(sItem); sError.Append(wxString::Format( _T(", is %d, expected %d"), (int)pList->size(),(int)itrKL->second)); } } } wxASSERT_MSG(sError.IsEmpty(),sError); #undef PP12 }