int readSecondSeq( char *seq, int line ) { int i=0, l=0; char cur; while (1) { if (*_r_buf2_pos ==*_r_buf2_size) { readBuffer2(); if (*_r_buf2_size == 0) return 0; } cur = _r_buf2[*_r_buf2_pos]; (*_r_buf2_pos)++; if ( cur == '\n') { if (l>0) i=l; seq[i]='\0'; return i; } if (cur == ' '&& l==0) { l = i; } if (cropSize>0 && line%2==0 && i==cropSize) continue; seq[i++]=cur; } }
Task::ReportResult GTest_hmmCompare::report() { QFileInfo fi1(env->getVar("COMMON_DATA_DIR")+"/"+file1Name); QString url1 = fi1.absoluteFilePath(); IOAdapterFactory* iof1 = AppContext::getIOAdapterRegistry()->getIOAdapterFactoryById(IOAdapterUtils::url2io(url1)); QScopedPointer<IOAdapter> io1(iof1->createIOAdapter()); //QFile file1(fi1.absoluteFilePath()); QFileInfo fi2(env->getVar("TEMP_DATA_DIR")+"/"+file2Name); QString url2 = fi2.absoluteFilePath(); IOAdapterFactory* iof2 = AppContext::getIOAdapterRegistry()->getIOAdapterFactoryById(IOAdapterUtils::url2io(url2)); QScopedPointer<IOAdapter> io2(iof2->createIOAdapter()); fi2.absoluteDir().mkdir(fi2.absoluteDir().absolutePath()); // ??? //QFile file2(fi2.absoluteFilePath()); if(!io1->open(url1, IOAdapterMode_Read)){ stateInfo.setError( QString("File opening error \"%1\", description: ").arg(url1) );//+file1.errorString() ); return ReportResult_Finished; } //file2.open(QIODevice::ReadOnly|QIODevice::Text); if(!io2->open(url2, IOAdapterMode_Read)){ stateInfo.setError( QString("File opening error \"%1\", description: ").arg(url2) );//+file2.errorString() ); return ReportResult_Finished; } static int READ_BUFF_SIZE = 4096; qint64 len1, len2, line1 = 0, line2 = 0; QByteArray readBuffer1(READ_BUFF_SIZE, '\0'), readBuffer2(READ_BUFF_SIZE, '\0'); char* cbuff1 = readBuffer1.data(); char* cbuff2 = readBuffer2.data(); QRegExp rx("CKSUM "); bool ok = false; while ( (len1 = io1->readUntil(cbuff1, READ_BUFF_SIZE, TextUtils::LINE_BREAKS, IOAdapter::Term_Include)) > 0 ) { line1++; if ((ok = rx.indexIn(QString(QByteArray(cbuff1, len1))) !=-1)) { break; } } if(!ok){ stateInfo.setError( QString("can't find CKSUM in file \"%1\"").arg(url1) ); return ReportResult_Finished; } ok = false; while ( (len2 = io2->readUntil(cbuff2, READ_BUFF_SIZE, TextUtils::LINE_BREAKS, IOAdapter::Term_Include)) > 0 ) { line2++; if ((ok = rx.indexIn(QString(QByteArray(cbuff2, len2))) !=-1)) { break; } } if(!ok){ stateInfo.setError( QString("can't find CKSUM in file \"%1\"").arg(url2) ); return ReportResult_Finished; } do{ len1 = io1->readUntil(cbuff1, READ_BUFF_SIZE, TextUtils::LINE_BREAKS, IOAdapter::Term_Include); len2 = io2->readUntil(cbuff2, READ_BUFF_SIZE, TextUtils::LINE_BREAKS, IOAdapter::Term_Include); if(len1 == 0 && 0 != len2){ stateInfo.setError( QString("hmm-compare: files not equal, desc: files length mismatch") ); return ReportResult_Finished; } line1++;line2++; QString s1 = QString::fromLatin1(cbuff1, len1).trimmed(); QString s2 = QString::fromLatin1(cbuff2, len2).trimmed(); if(s1 != s2) { stateInfo.setError( QString("hmm-compare: files not equal, desc: file1, line %1 \"%2\", expected file2, line %3 \"%4\"") .arg(line1).arg(s1).arg(line2).arg(s2) ); return ReportResult_Finished; } } while(len1 > 0); return ReportResult_Finished; }