NCBI C++ ToolKit
blast_scope_src_unit_test.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

00001 /*  $Id: blast_scope_src_unit_test.cpp 61368 2014-01-16 14:02:06Z camacho $
00002  * ===========================================================================
00003  *
00004  *                            PUBLIC DOMAIN NOTICE
00005  *               National Center for Biotechnology Information
00006  *
00007  *  This software/database is a "United States Government Work" under the
00008  *  terms of the United States Copyright Act.  It was written as part of
00009  *  the author's official duties as a United States Government employee and
00010  *  thus cannot be copyrighted.  This software/database is freely available
00011  *  to the public for use. The National Library of Medicine and the U.S.
00012  *  Government have not placed any restriction on its use or reproduction.
00013  *
00014  *  Although all reasonable efforts have been taken to ensure the accuracy
00015  *  and reliability of the software and data, the NLM and the U.S.
00016  *  Government do not and cannot warrant the performance or results that
00017  *  may be obtained by using this software or data. The NLM and the U.S.
00018  *  Government disclaim all warranties, express or implied, including
00019  *  warranties of performance, merchantability or fitness for any particular
00020  *  purpose.
00021  *
00022  *  Please cite the author in any work or product based on this material.
00023  *
00024  * ===========================================================================
00025  *
00026  * Author:  Christiam Camacho
00027  *
00028  */
00029 
00030 /** @file blast_scope_src_unit_test.cpp
00031  */
00032 #include <ncbi_pch.hpp>
00033 #define NCBI_BOOST_NO_AUTO_TEST_MAIN
00034 #include <corelib/test_boost.hpp>
00035 #include <boost/test/auto_unit_test.hpp>
00036 #include <algo/blast/blastinput/blast_scope_src.hpp>
00037 #include <objects/seqloc/Seq_id.hpp>
00038 #include <objmgr/util/seq_loc_util.hpp>
00039 #include <objects/entrez2/entrez2_client.hpp>
00040 #include <objmgr/seq_vector.hpp>
00041 
00042 #include <algo/blast/blastinput/blast_input.hpp>
00043 #include <algo/blast/blastinput/blast_fasta_input.hpp>
00044 #include <algo/blast/api/sseqloc.hpp>
00045 #include "blast_input_unit_test_aux.hpp"
00046 #if defined(NCBI_COMPILER_WORKSHOP) && defined(NDEBUG) && defined(NCBI_WITHOUT_MT) && defined(__i386) && NCBI_COMPILER_VERSION == 550
00047 #  define BUGGY_COMPILER
00048 #endif
00049 
00050 #if !defined(SKIP_DOXYGEN_PROCESSING) && !defined(BUGGY_COMPILER)
00051 
00052 USING_NCBI_SCOPE;
00053 USING_SCOPE(blast);
00054 USING_SCOPE(objects);
00055 
00056 const char* CAutoNcbiConfigFile::kSection = "BLAST";
00057 const char* CAutoNcbiConfigFile::kDataLoaders = "DATA_LOADERS";
00058 const char* CAutoNcbiConfigFile::kProtBlastDbDataLoader 
00059     = "BLASTDB_PROT_DATA_LOADER";
00060 const char* CAutoNcbiConfigFile::kNuclBlastDbDataLoader
00061     = "BLASTDB_NUCL_DATA_LOADER";
00062 
00063 BOOST_AUTO_TEST_SUITE(blast_scope_src)
00064 
00065 BOOST_AUTO_TEST_CASE(RetrieveFromBlastDb_TestSequenceData) 
00066 {
00067     CSeq_id seqid(CSeq_id::e_Gi, 129295);
00068 
00069     const char* seq =
00070 "QIKDLLVSSSTDLDTTLVLVNAIYFKGMWKTAFNAEDTREMPFHVTKQESKPVQMMCMNNSFNVATLPAEKMKILELPFASGDLSMLVLLPDEVSDLERIEKTINFEKLTEWTNPNTMEKRRVKVYLPQMKIEEKYNLTSVLMALGMTDLFIPSANLTGISSAESLKISQAVHGAFMELSEDGIEMAGSTGVIEDIKHSPESEQFRADHPFLFLIKHNPTNTIVYFGRYWSP";
00071 
00072     CAutoNcbiConfigFile afc;
00073     afc.SetProteinBlastDbDataLoader(SDataLoaderConfig::kDefaultProteinBlastDb);
00074     SDataLoaderConfig dlconfig(true);
00075     BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, 
00076                       string(SDataLoaderConfig::kDefaultProteinBlastDb));
00077     CBlastScopeSourceWrapper scope_source(dlconfig);
00078     CRef<CScope> scope = scope_source.NewScope();
00079     string data_loader_name("BLASTDB_");
00080     data_loader_name += string(SDataLoaderConfig::kDefaultProteinBlastDb);
00081     data_loader_name += "Protein";
00082     BOOST_REQUIRE_EQUAL(data_loader_name,
00083                         scope_source.GetBlastDbLoaderName());
00084 
00085     CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
00086     CSeqVector sv = bh.GetSeqVector(CBioseq_Handle::eCoding_Iupac);
00087 
00088     for (size_t i = 0; i < sv.size(); i++) {
00089         BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
00090     }
00091 }
00092 
00093 // This is supposed to similate the absence of a .ncbirc file
00094 BOOST_AUTO_TEST_CASE(RetrieveFromDefaultBlastDb_NoNcbirc) 
00095 {
00096     CSeq_id seqid(CSeq_id::e_Gi, 129295);
00097 
00098     const char* seq =
00099 "QIKDLLVSSSTDLDTTLVLVNAIYFKGMWKTAFNAEDTREMPFHVTKQESKPVQMMCMNNSFNVATLPAEKMKILELPFASGDLSMLVLLPDEVSDLERIEKTINFEKLTEWTNPNTMEKRRVKVYLPQMKIEEKYNLTSVLMALGMTDLFIPSANLTGISSAESLKISQAVHGAFMELSEDGIEMAGSTGVIEDIKHSPESEQFRADHPFLFLIKHNPTNTIVYFGRYWSP";
00100 
00101     CAutoEnvironmentVariable auto_env1("NCBI", "/dev/null");
00102     CAutoEnvironmentVariable auto_env2("BLASTDB", "/blast/db/blast");
00103     CNcbiApplication* app = CNcbiApplication::Instance();
00104     app->ReloadConfig(CMetaRegistry::fAlwaysReload, 0);
00105 
00106     SDataLoaderConfig dlconfig(true);
00107     BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, 
00108                       string(SDataLoaderConfig::kDefaultProteinBlastDb));
00109     CBlastScopeSourceWrapper scope_source(dlconfig);
00110     CRef<CScope> scope = scope_source.NewScope();
00111     string data_loader_name("BLASTDB_");
00112     data_loader_name += string(SDataLoaderConfig::kDefaultProteinBlastDb);
00113     data_loader_name += "Protein";
00114     BOOST_REQUIRE_EQUAL(data_loader_name,
00115                         scope_source.GetBlastDbLoaderName());
00116 
00117     CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
00118     CSeqVector sv = bh.GetSeqVector(CBioseq_Handle::eCoding_Iupac);
00119 
00120     for (size_t i = 0; i < sv.size(); i++) {
00121         BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
00122     }
00123     app->GetConfig().IncludeNcbircIfAllowed();
00124 }
00125 
00126 // Motivated by JIRA WB-235
00127 BOOST_AUTO_TEST_CASE(RetrieveFromBlastDbOnly_TestSequenceDataWithAccession) 
00128 {
00129     vector<string> accessions;
00130     // note the order, this comes second in the BLAST DB
00131     accessions.push_back("CCD68076");   
00132     accessions.push_back("NP_001024503");
00133 
00134     const string kNonStdDb("prot_dbs");
00135     SDataLoaderConfig dlconfig(kNonStdDb, true,
00136                                SDataLoaderConfig::eUseBlastDbDataLoader);
00137     BOOST_CHECK(dlconfig.m_BlastDbName == kNonStdDb);
00138     CBlastScopeSourceWrapper scope_source(dlconfig);
00139     CRef<CScope> scope = scope_source.NewScope();
00140     string data_loader_name("BLASTDB_");
00141     data_loader_name += kNonStdDb;
00142     data_loader_name += "Protein";
00143     BOOST_REQUIRE_EQUAL(data_loader_name,
00144                         scope_source.GetBlastDbLoaderName());
00145 
00146     ITERATE(vector<string>, acc, accessions) {
00147     CSeq_id id(*acc);
00148 
00149     const char* seq ="\
00150 MADDSENFVLTVDIGTTTIRSVVYDSKCKERGSYQEKVNTIYTTRNDDEVLVEIEPEQLFLQFLRVIKKAYETLPPNAHV\
00151 DVGLCTQRNSIVLWNKRTLKEETRIICWNDKRANNKCHNLNNSFLLKALNLAGGFLHFVTRKNRFLAAQRLKFLGGMVSH\
00152 RLMVTIDRSEKLKLMKADGDLCYGSLETWLLMRSSKSNILCVEASNISPSGMFDPWIGAYNTLIMKIIGFPTDMLFPIVD\
00153 SNLKDMNKLPIIDSSHIGKEFTISSIIADQQAAMFGCGTWERGDVKITLGTGTFVNVHTGKVPYASMSGLYPLVGWRING\
00154 ETDFIAEGNAHDTAVILHWAQSIGLFNDVTETSDIALSVNDSNGVVFIPAFCGIQTPINDETACSGFMCIRPDTTKVHMV\
00155 RAILESIAFRVYQIYAAAESEVNINKNSPVRICGGVSNNNFICQCIADLLGRKVERMTDSDHVAARGVALLTGFSSGIWT\
00156 KEKLRELVTVEDIFTPNYESRKGLLKTFQTWKKAVDRCLGFYH";
00157 
00158     CBioseq_Handle bh = scope->GetBioseqHandle(id);
00159     CSeqVector sv = bh.GetSeqVector(CBioseq_Handle::eCoding_Iupac);
00160 
00161         CNcbiOstrstream os;
00162         os << "Failed on accession " << *acc;
00163         const string msg = CNcbiOstrstreamToString(os);
00164     for (size_t i = 0; i < sv.size(); i++) {
00165             BOOST_REQUIRE_MESSAGE((char)seq[i] == (char)sv[i], msg);
00166         }
00167     }
00168 }
00169 
00170 BOOST_AUTO_TEST_CASE(ConfigFileTest_RetrieveFromBlastDb_TestSequenceData) 
00171 {
00172     CSeq_id seqid(CSeq_id::e_Gi, 129295);
00173 
00174     const char* seq =
00175 "QIKDLLVSSSTDLDTTLVLVNAIYFKGMWKTAFNAEDTREMPFHVTKQESKPVQMMCMNNSFNVATLPAEKMKILELPFASGDLSMLVLLPDEVSDLERIEKTINFEKLTEWTNPNTMEKRRVKVYLPQMKIEEKYNLTSVLMALGMTDLFIPSANLTGISSAESLKISQAVHGAFMELSEDGIEMAGSTGVIEDIKHSPESEQFRADHPFLFLIKHNPTNTIVYFGRYWSP";
00176 
00177 
00178     CAutoNcbiConfigFile acf(SDataLoaderConfig::eUseBlastDbDataLoader);
00179     acf.SetProteinBlastDbDataLoader(SDataLoaderConfig::kDefaultProteinBlastDb);
00180     SDataLoaderConfig dlconfig(true);
00181     BOOST_CHECK(dlconfig.m_UseBlastDbs == true);
00182     BOOST_CHECK(dlconfig.m_UseGenbank == false);
00183     BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName,
00184                 string(SDataLoaderConfig::kDefaultProteinBlastDb));
00185     CBlastScopeSourceWrapper scope_source(dlconfig);
00186     CRef<CScope> scope = scope_source.NewScope();
00187     string data_loader_name("BLASTDB_");
00188     data_loader_name += string(SDataLoaderConfig::kDefaultProteinBlastDb);
00189     data_loader_name += "Protein";
00190     BOOST_REQUIRE_EQUAL(data_loader_name,
00191                         scope_source.GetBlastDbLoaderName());
00192 
00193     CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
00194     CSeqVector sv = bh.GetSeqVector(CBioseq_Handle::eCoding_Iupac);
00195 
00196     for (size_t i = 0; i < sv.size(); i++) {
00197         BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
00198     }
00199 }
00200 
00201 BOOST_AUTO_TEST_CASE
00202     (ConfigFileTest_RetrieveFromNonStandardBlastDb_Config_TestSequenceData) 
00203 {
00204     CSeq_id seqid(CSeq_id::e_Gi, 1787519);
00205 
00206     const char* seq = "MKAIFVLKGWWRTS";
00207 
00208     const string kNonStdDb("ecoli");
00209     CAutoNcbiConfigFile acf(SDataLoaderConfig::eUseBlastDbDataLoader);
00210     acf.SetProteinBlastDbDataLoader(kNonStdDb);
00211     SDataLoaderConfig dlconfig(true);
00212     BOOST_CHECK(dlconfig.m_UseBlastDbs == true);
00213     BOOST_CHECK(dlconfig.m_UseGenbank == false);
00214     BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, kNonStdDb);
00215     CBlastScopeSourceWrapper scope_source(dlconfig);
00216     CRef<CScope> scope = scope_source.NewScope();
00217     string data_loader_name("BLASTDB_");
00218     data_loader_name += kNonStdDb + "Protein";
00219     BOOST_REQUIRE_EQUAL(data_loader_name,
00220                         scope_source.GetBlastDbLoaderName());
00221 
00222     CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
00223     CSeqVector sv = bh.GetSeqVector(CBioseq_Handle::eCoding_Iupac);
00224 
00225     for (size_t i = 0; i < sv.size(); i++) {
00226         BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
00227     }
00228 }
00229 
00230 // Since this uses the SDataLoaderConfig constructor which specifies the BLAST
00231 // database, it doesn't matter what the config value has
00232 BOOST_AUTO_TEST_CASE
00233     (ConfigFileTest_RetrieveFromNonStandardBlastDb_ForcedDb_TestSequenceData) 
00234 {
00235     CSeq_id seqid(CSeq_id::e_Gi, 1787519);
00236 
00237     const char* seq = "MKAIFVLKGWWRTS";
00238 
00239     const string kNonStdDb("ecoli");
00240     CAutoNcbiConfigFile acf(SDataLoaderConfig::eUseBlastDbDataLoader);
00241     acf.SetProteinBlastDbDataLoader("dummy db");
00242     SDataLoaderConfig dlconfig(kNonStdDb, true,
00243                                SDataLoaderConfig::eUseBlastDbDataLoader);
00244     BOOST_CHECK(dlconfig.m_UseBlastDbs == true);
00245     BOOST_CHECK(dlconfig.m_UseGenbank == false);
00246     BOOST_CHECK(dlconfig.m_BlastDbName == kNonStdDb);
00247     CBlastScopeSourceWrapper scope_source(dlconfig);
00248     CRef<CScope> scope = scope_source.NewScope();
00249     string data_loader_name("BLASTDB_");
00250     data_loader_name += kNonStdDb + "Protein";
00251     BOOST_REQUIRE_EQUAL(data_loader_name,
00252                         scope_source.GetBlastDbLoaderName());
00253 
00254     CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
00255     CSeqVector sv = bh.GetSeqVector(CBioseq_Handle::eCoding_Iupac);
00256 
00257     for (size_t i = 0; i < sv.size(); i++) {
00258         BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
00259     }
00260 }
00261 
00262 BOOST_AUTO_TEST_CASE(ConfigFileTest_RetrieveFromGenbank_TestSequenceData) 
00263 {
00264     CSeq_id seqid(CSeq_id::e_Gi, 129295);
00265 
00266     const char* seq =
00267 "QIKDLLVSSSTDLDTTLVLVNAIYFKGMWKTAFNAEDTREMPFHVTKQESKPVQMMCMNNSFNVATLPAEKMKILELPFASGDLSMLVLLPDEVSDLERIEKTINFEKLTEWTNPNTMEKRRVKVYLPQMKIEEKYNLTSVLMALGMTDLFIPSANLTGISSAESLKISQAVHGAFMELSEDGIEMAGSTGVIEDIKHSPESEQFRADHPFLFLIKHNPTNTIVYFGRYWSP";
00268 
00269 
00270     CAutoNcbiConfigFile acf(SDataLoaderConfig::eUseGenbankDataLoader);
00271     SDataLoaderConfig dlconfig(true);
00272     BOOST_CHECK(dlconfig.m_UseBlastDbs == false);
00273     BOOST_CHECK(dlconfig.m_UseGenbank == true);
00274     BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, kEmptyStr);
00275     CBlastScopeSourceWrapper scope_source(dlconfig);
00276     CRef<CScope> scope = scope_source.NewScope();
00277     BOOST_REQUIRE(scope_source.GetBlastDbLoaderName() == kEmptyStr);
00278 
00279     CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
00280     CSeqVector sv = bh.GetSeqVector(CBioseq_Handle::eCoding_Iupac);
00281 
00282     for (size_t i = 0; i < sv.size(); i++) {
00283         BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
00284     }
00285 }
00286 
00287 // not the best thing to do, but supported nonetheless...
00288 BOOST_AUTO_TEST_CASE(ConfigFileTest_UseNoDataLoaders) 
00289 {
00290     CSeq_id seqid(CSeq_id::e_Gi, 129295);
00291 
00292     CAutoNcbiConfigFile acf(SDataLoaderConfig::eUseNoDataLoaders);
00293     SDataLoaderConfig dlconfig("pdbaa", true);
00294     BOOST_CHECK(dlconfig.m_UseBlastDbs == false);
00295     BOOST_CHECK(dlconfig.m_UseGenbank == false);
00296     BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, kEmptyStr);
00297     CBlastScopeSourceWrapper scope_source(dlconfig);
00298     CRef<CScope> scope = scope_source.NewScope();
00299     BOOST_REQUIRE(scope_source.GetBlastDbLoaderName() == kEmptyStr);
00300 
00301     CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
00302     BOOST_CHECK(bh.State_NoData());
00303 }
00304 
00305 static 
00306 void s_RetrieveSequenceLength(int gi, 
00307                               const string& dbname,
00308                               bool is_prot,
00309                               TSeqPos kExpectedLength) 
00310 {
00311     const CSeq_id seqid(CSeq_id::e_Gi, gi);
00312 
00313     CAutoNcbiConfigFile afc;
00314     afc.SetProteinBlastDbDataLoader(dbname);
00315     afc.SetNucleotideBlastDbDataLoader(dbname);
00316     SDataLoaderConfig dlconfig(dbname, is_prot);
00317     BOOST_CHECK(dlconfig.m_UseBlastDbs == true);
00318     BOOST_CHECK(dlconfig.m_UseGenbank == true);
00319     BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, dbname);
00320     CBlastScopeSourceWrapper scope_source(dlconfig);
00321 
00322     CRef<CScope> scope = scope_source.NewScope();
00323     TSeqPos length = sequence::GetLength(seqid, scope);
00324     BOOST_CHECK_EQUAL(kExpectedLength, length);
00325 }
00326 
00327 BOOST_AUTO_TEST_CASE(RetrieveFromBlastDb) {
00328     s_RetrieveSequenceLength(129295, "nr", true, 232);
00329 }
00330 
00331 // This gi has been removed from the BLAST databases
00332 BOOST_AUTO_TEST_CASE(RetrieveFromGenbank) {
00333     s_RetrieveSequenceLength(7450545, "nr", true, 443);
00334 }
00335 
00336 BOOST_AUTO_TEST_CASE(RetrieveFromGenbank_NewlyAddedSequenceToGenbank) {
00337 
00338     // Get today's date
00339     CTime t;
00340     t.SetCurrent().SetFormat("Y/M/D");
00341     const string query_str(t.AsString() + "[PDAT]");
00342 
00343     // Search sequences publishe recently
00344     CEntrez2Client entrez;
00345     vector<int> results;
00346     entrez.Query(query_str, "nucleotide", results);
00347     if (results.empty()) {
00348         // No newly added sequences today :(
00349         return;
00350     }
00351 
00352     const CSeq_id seqid(CSeq_id::e_Gi, results.front());
00353     CBlastScopeSourceWrapper scope_source;
00354 
00355     TSeqPos length = sequence::GetLength(seqid, scope_source.NewScope());
00356     s_RetrieveSequenceLength(results.front(), "nt", false, length);
00357 }
00358 
00359 BOOST_AUTO_TEST_CASE(RetrieveFromGenbank_NoBlastDbDataLoader) {
00360     const CSeq_id seqid(CSeq_id::e_Gi, 7450545);
00361     CBlastScopeSourceWrapper scope_source;
00362     CRef<CScope> scope = scope_source.NewScope();
00363     TSeqPos length = sequence::GetLength(seqid, scope);
00364     const TSeqPos kExpectedLength = 443;
00365     BOOST_CHECK_EQUAL(kExpectedLength, length);
00366 }
00367 
00368 BOOST_AUTO_TEST_CASE(RetrieveFromGenbank_IncorrectBlastDbType) {
00369     s_RetrieveSequenceLength(7450545, "sts", false, 443);
00370 }
00371 
00372 struct SDiagRestorer {
00373     SDiagRestorer() { m_OriginalValue = SetDiagPostLevel(); }
00374     ~SDiagRestorer() { SetDiagPostLevel(m_OriginalValue); }
00375 private:
00376     EDiagSev m_OriginalValue;
00377 };
00378 
00379 BOOST_AUTO_TEST_CASE(InvalidBlastDatabase) {
00380     try {
00381         SDiagRestorer d;
00382         s_RetrieveSequenceLength(129295, "dummy", true, 232);
00383     } catch (const CException& e) {
00384         const string kExpectedMsg(" BLAST database 'dummy' does not exist in");
00385         BOOST_CHECK(e.GetMsg().find(kExpectedMsg) != NPOS);
00386     }
00387 }
00388 
00389 BOOST_AUTO_TEST_CASE(ForceRemoteBlastDbLoader) {
00390     CAutoEnvironmentVariable env("BLASTDB", kEmptyStr);
00391     CAutoNcbiConfigFile acf(SDataLoaderConfig::eUseBlastDbDataLoader);
00392     acf.RemoveBLASTDBEnvVar();
00393     acf.SetProteinBlastDbDataLoader(SDataLoaderConfig::kDefaultProteinBlastDb);
00394 
00395     // Make sure to post warnings
00396     CDiagRestorer diag_restorer;
00397     SetDiagPostLevel(eDiag_Info);
00398 
00399     // Redirect the output warnings
00400     CNcbiOstrstream error_stream;
00401     SetDiagStream(&error_stream); 
00402 
00403     const CSeq_id seqid(CSeq_id::e_Gi, 129295);
00404 
00405     SDataLoaderConfig dlconfig(true);
00406     dlconfig.m_UseGenbank = false;
00407     BOOST_CHECK(dlconfig.m_UseBlastDbs == true);
00408     BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName,
00409                 string(SDataLoaderConfig::kDefaultProteinBlastDb));
00410     CBlastScopeSourceWrapper scope_source(dlconfig);
00411 
00412     CRef<CScope> scope = scope_source.NewScope();
00413     TSeqPos length = sequence::GetLength(seqid, scope);
00414     const TSeqPos kExpectedLength = 232;
00415     BOOST_CHECK_EQUAL(kExpectedLength, length);
00416 
00417     const string kWarnings = CNcbiOstrstreamToString(error_stream);
00418     const string kExpectedMsg("Error initializing local BLAST database data");
00419     BOOST_CHECK(kWarnings.find(kExpectedMsg) != NPOS);
00420 
00421     string data_loader_name("REMOTE_BLASTDB_");
00422     data_loader_name += string(SDataLoaderConfig::kDefaultProteinBlastDb);
00423     data_loader_name += "Protein";
00424     BOOST_REQUIRE_EQUAL(data_loader_name,
00425                         scope_source.GetBlastDbLoaderName());
00426 }
00427 
00428 BOOST_AUTO_TEST_SUITE_END()
00429 #endif /* SKIP_DOXYGEN_PROCESSING */
Modified on Wed Sep 17 18:25:23 2014 by modify_doxy.py rev. 426318