Task::ReportResult GTest_DNASequencePart::report() { GObject *obj = getContext<GObject>(this,objContextName); if (obj==NULL) { stateInfo.setError(QString("wrong value: %1").arg(OBJ_ATTR)); return ReportResult_Finished; } U2SequenceObject * objSequence = qobject_cast<U2SequenceObject*>(obj); if (objSequence==NULL) { stateInfo.setError(QString("can't cast to sequence from: %1").arg(obj->getGObjectName())); return ReportResult_Finished; } if (objSequence->getSequenceLength() < startPos + subseq.length()) { stateInfo.setError(QString("sequence size is less that region end: size=%1, region-end=%2, objectName=%3").arg(objSequence->getSequenceLength()).arg(startPos + subseq.length()).arg(obj->getGObjectName())); return ReportResult_Finished; } QByteArray objSubSeq = objSequence->getSequenceData(U2Region(startPos, subseq.length())); if (!objSequence->getAlphabet()->isCaseSensitive()) { subseq = subseq.toUpper(); } if (objSubSeq != subseq){ stateInfo.setError(QString("region not matched: %1, expected %2").arg(objSubSeq.constData()).arg(subseq.constData())); return ReportResult_Finished; } return ReportResult_Finished; }
Task::ReportResult GTest_DNATranslation3to1Test::report() { GObject *obj = getContext<GObject>(this, objContextName); if (obj==NULL){ stateInfo.setError(QString("wrong value: %1").arg(OBJ_ATTR)); return ReportResult_Finished; } U2SequenceObject * mySequence = qobject_cast<U2SequenceObject*>(obj); if(mySequence==NULL){ stateInfo.setError(QString("error can't cast to sequence from: %1").arg(obj->getGObjectName())); return ReportResult_Finished; } if(!(mySequence->getAlphabet()->isNucleic())){ stateInfo.setError(QString("error Alphabet is not Nucleic: %1").arg(mySequence->getAlphabet()->getId())); return ReportResult_Finished; } DNATranslation* aminoTransl = 0; DNATranslationRegistry* tr = AppContext::getDNATranslationRegistry(); QList<DNATranslation*> aminoTs = tr->lookupTranslation(mySequence->getAlphabet(), DNATranslationType_NUCL_2_AMINO); if (!aminoTs.empty()) { aminoTransl = tr->getStandardGeneticCodeTranslation(mySequence->getAlphabet()); } int tempValue; if(strTo == -1){ tempValue=-1; } else{ tempValue=(strTo-strFrom+1); } QByteArray myByteArray = mySequence->getSequenceData(U2Region(strFrom,tempValue)); QByteArray rezult(myByteArray.length() / 3, 0); int n = aminoTransl->translate(myByteArray, myByteArray.length(), rezult.data(), rezult.length()); assert(n == rezult.length()); Q_UNUSED(n); if(rezult != stringValue.toLatin1()){ stateInfo.setError(QString("translated sequence not matched: %1, expected %2 ").arg(rezult.data()).arg(stringValue)); return ReportResult_Finished; } return ReportResult_Finished; }