Пример #1
0
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;

	}
}
Пример #2
0
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;
}