// Compare images: bool KOFilter::imageCompare(const QString &dir1File, const QString &dir2File) { // Check src file: QFileInfo fi1(dir1File); // Check dst file: QFileInfo fi2(dir2File); // Check files: if (!fi1.exists() || !fi2.exists()) return false; QImage img1(dir1File); QImage img2(dir2File); if (img1.size() != img2.size()) return false; for (int j=0; j<img1.height(); j++) for (int i=0; i<img1.width(); i++) { QRgb color1 = img1.pixel(i, j); QRgb color2 = img2.pixel(i, j); if (color1 != color2) return false; } return true; }
int main( void ) { // Create objects and give value to their propertiess TestObject obj1, obj2, obj3, obj4; obj1.attr1 = 3.4f; obj1.attr2 = 4; obj1.getProperty( "property3" ).set( 2.3f ); obj1.getProperty( "property4" ).set( 4 ); obj2.attr1 = 3.2f; obj2.attr2 = 10; obj2["property3"].set( 3.4f ); obj2.getProperty( "property4" ).set( 10 ); obj3.attr1 = 1.4f; obj3.attr2 = 3; obj3.getProperty( "property3" ).set( 4.5f ); obj3.getProperty( "property4" ).set( 3 ); obj4.attr1 = 4.1f; obj4.attr2 = 5; obj4.getProperty( "property3" ).set( 5.6f ); obj4.getProperty( "property4" ).set( 5 ); // Label objects obj1.label( ) = "Object 1"; obj2.label( ) = "Object 2"; obj3.label( ) = "Object 3"; obj4.label( ) = "Object 4"; fires::Objects objects; { objects.addList( { &obj1, &obj2, &obj3, &obj4 } ); fires::FilterSet fs0; fires::FilterSetConfig fsc0; fires::FilterMinValue< float > ff10( 5.0f ); fsc0.filters( ).push_back( std::make_pair( "property3", &ff10 )); fs0.eval( objects, fsc0 ); printObjects( objects ); } { objects.addList( { &obj1, &obj2, &obj3, &obj4 } ); fires::FilterSet fs0; fires::FilterSetConfig fsc0; fires::FilterMaxValue< float > ff10( 5.0f ); fsc0.filters( ).push_back( std::make_pair( "property3", &ff10 )); fs0.eval( objects, fsc0 ); printObjects( objects ); } objects.clearAdds( { &obj1, &obj2, &obj3, &obj4 } ); fires::FilterSet fs; fires::FilterSetConfig fsc; fires::FilterScalarRange< float > ff1( 3.0f, 5.0f ); fires::FilterScalarRange< int > fi1( 0, 9 ); printObjects( objects ); fsc.filters( ).push_back( std::make_pair( "property3", &ff1 )); fs.eval( objects, fsc ); printObjects( objects ); ff1.rangeInclusion( ) = fires::FilterRange::OUTSIDE_RANGE; fs.eval( objects, fsc ); printObjects( objects ); objects.clearAdds( { &obj1, &obj2, &obj3, &obj4 } ); fsc.filters( ).push_back( std::make_pair( "property4", &fi1 )); fs.eval( objects, fsc ); printObjects( objects ); objects.clear( ); objects.add( &obj1 ); objects.add( &obj2 ); objects.add( &obj3 ); objects.add( &obj4 ); ff1.rangeInclusion( ) = fires::FilterRange::INSIDE_RANGE; fsc.filterPropertyLabel( ) = std::string( "fires::filter" ); fs.eval( objects, fsc ); printObjects( objects, "fires::filter" ); ff1.rangeInclusion( ) = fires::FilterRange::OUTSIDE_RANGE; fs.eval( objects, fsc ); printObjects( objects, "fires::filter" ); }
int main() { X<A1> xa; fi1(); }
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; }