void operator()( const CDirEntry & dirEntry ) {
        //const static size_t kInvalidFileNumber = numeric_limits<size_t>::max();

        if( ! dirEntry.IsFile() ) {
            return;
        }

        CFile file(dirEntry);
        string name = file.GetName();
        if (NStr::EndsWith(name, ".txt")  ||  NStr::StartsWith(name, ".")) {
            return;
        }
        if (NStr::EndsWith(name, extKeep)) {
            return;
        }

        // extract info from the file name
        const string sFileName = file.GetName();
        vector<string> vecFileNamePieces;
        NStr::Split( sFileName, ".", vecFileNamePieces );
        BOOST_REQUIRE(vecFileNamePieces.size() == 3);

        string sTestName = vecFileNamePieces[0];
        BOOST_REQUIRE(!sTestName.empty());
        string sObjType = vecFileNamePieces[1];
        BOOST_REQUIRE(!sObjType.empty());
        string sFileType = vecFileNamePieces[2];
        BOOST_REQUIRE(!sFileType.empty());
            
        STestInfo & test_info_to_load =
            (*m_pTestNameToInfoMap)[vecFileNamePieces[0]];

        // assign object type contained in test input
        if (sObjType == "entry"  ||  sObjType == "annot") {
            test_info_to_load.mObjType = sObjType;
        }
        else {
            BOOST_FAIL("Unknown object type " << sObjType << ".");
        }

        // figure out what type of file we have and set appropriately
        if (sFileType == mExtInput) {
            BOOST_REQUIRE( test_info_to_load.mInFile.GetPath().empty() );
            test_info_to_load.mInFile = file;
        } 
        else if (sFileType == mExtOutput) {
            BOOST_REQUIRE( test_info_to_load.mOutFile.GetPath().empty() );
            test_info_to_load.mOutFile = file;
        } 
        else if (sFileType == mExtErrors) {
            BOOST_REQUIRE( test_info_to_load.mErrorFile.GetPath().empty() );
            test_info_to_load.mErrorFile = file;
        } 

        else {
            BOOST_FAIL("Unknown file type " << sFileName << ".");
        }
    }
    void operator()( const CDirEntry & dirEntry ) {
        if( ! dirEntry.IsFile() ) {
            return;
        }

        CFile file(dirEntry);
        string name = file.GetName();
        if (NStr::EndsWith(name, ".txt")  ||  NStr::StartsWith(name, ".")) {
            return;
        }

        // extract info from the file name
        const string sFileName = file.GetName();
        vector<CTempString> vecFileNamePieces;
        NStr::Split( sFileName, ".", vecFileNamePieces );
        BOOST_REQUIRE(vecFileNamePieces.size() == 2);

        CTempString tsTestName = vecFileNamePieces[0];
        BOOST_REQUIRE(!tsTestName.empty());
        CTempString tsFileType = vecFileNamePieces[1];
        BOOST_REQUIRE(!tsFileType.empty());
            
        STestInfo & test_info_to_load =
            (*m_pTestNameToInfoMap)[vecFileNamePieces[0]];

        // figure out what type of file we have and set appropriately
        if (tsFileType == mExtInput) {
            BOOST_REQUIRE( test_info_to_load.mInFile.GetPath().empty() );
            test_info_to_load.mInFile = file;
        } 
        else if (tsFileType == mExtOutput) {
            BOOST_REQUIRE( test_info_to_load.mOutFile.GetPath().empty() );
            test_info_to_load.mOutFile = file;
        } 
        else if (tsFileType == mExtErrors) {
            BOOST_REQUIRE( test_info_to_load.mErrorFile.GetPath().empty() );
            test_info_to_load.mErrorFile = file;
        } 

        else {
            BOOST_FAIL("Unknown file type " << sFileName << ".");
        }
    }
示例#3
0
        void operator()( const CDirEntry & dirEntry ) {
            const static size_t kInvalidFileNumber = numeric_limits<size_t>::max();

            if( ! dirEntry.IsFile() ) {
                return;
            }

            CFile file(dirEntry);

            // skip the README file
            if( file.GetName() == "README.txt" ) {
                return;
            }

            // skip .svn files
            if( NStr::Find(file.GetPath(), ".svn") != NPOS )
            {
                return;
            }

            const string sFilePath = file.GetPath();
            cout << "Parsing file name: " << sFilePath << endl;

            // extract info from the file name
            const string sFileName = file.GetName();
            vector<CTempString> vecFileNamePieces;
            NStr::Tokenize( sFileName, ".", vecFileNamePieces );

            BOOST_REQUIRE( vecFileNamePieces.size() == 2 ||
                vecFileNamePieces.size() == 3 );

            CTempString tsTestName = vecFileNamePieces[0];
            BOOST_REQUIRE( ! tsTestName.empty() );
            CTempString tsFileType = vecFileNamePieces[1];
            size_t iFileNumber = kInvalidFileNumber;
            if( vecFileNamePieces.size() > 2 ) {
                iFileNumber = NStr::StringToUInt(vecFileNamePieces[2]);
            }
            
            STestInfo & test_info_to_load =
                (*m_pTestNameToInfoMap)[vecFileNamePieces[0]];

            // figure out what type of file we have and set appropriately
            if( tsFileType == "agp" && iFileNumber == kInvalidFileNumber ) {
                // handle agp file
                // (and make sure we don't have duplicates)
                BOOST_REQUIRE( test_info_to_load.m_AGPFile.GetPath().empty() );
                test_info_to_load.m_AGPFile = file;
            } else if( tsFileType == "expected_seq_entry" && iFileNumber != kInvalidFileNumber )
            {
                // handle expected seq-entry file
                // (Note that the files could come in in any order)

                vector<CFile> & vecExpectedSeqEntryFiles = 
                    test_info_to_load.m_vecExpectedSeqEntryFiles;

                if( vecExpectedSeqEntryFiles.size() <= iFileNumber ) {
                    // expand the vector to include this file number
                    vecExpectedSeqEntryFiles.resize( 1 + iFileNumber );
                }

                // make sure no duplicates
                BOOST_REQUIRE( vecExpectedSeqEntryFiles[iFileNumber].GetPath().empty() );
                vecExpectedSeqEntryFiles[iFileNumber] = file;
            } else if( tsFileType == "flags" && iFileNumber == kInvalidFileNumber ) {
                // handle flags file
                BOOST_REQUIRE( test_info_to_load.m_FlagFile.GetPath().empty() );
                test_info_to_load.m_FlagFile = file;
            } else {
                BOOST_FAIL("Unknown file type");
            }
        }