ProteoWizard
Classes | Functions | Variables
ReaderTest.cpp File Reference
#include "pwiz/utility/misc/unit.hpp"
#include "pwiz/utility/misc/Std.hpp"
#include "pwiz/utility/misc/Filesystem.hpp"
#include "Reader.hpp"
#include "examples.hpp"
#include "MSDataFile.hpp"
#include "pwiz/data/vendor_readers/ExtendedReaderList.hpp"
#include <cstring>

Go to the source code of this file.

Classes

class  Reader1
 
struct  Reader1::ReaderConfig
 
class  Reader2
 
struct  Reader2::ReaderConfig
 

Functions

void testGet ()
 
void testAccept ()
 
void testRead ()
 
void testIdentifyFileFormat ()
 
void test ()
 
int main (int argc, char *argv[])
 

Variables

ostream * os_ = 0
 

Function Documentation

◆ testGet()

void testGet ( )

Definition at line 128 of file ReaderTest.cpp.

129 {
130  if (os_) *os_ << "testGet()\n";
131 
132  ReaderList readers;
133  readers.push_back(ReaderPtr(new Reader1));
134  readers.push_back(ReaderPtr(new Reader2));
135 
136  unit_assert(readers.size() == 2);
137 
138  Reader1* reader1 = readers.get<Reader1>();
139  unit_assert(reader1);
140  if (os_) *os_ << "reader1 config: " << reader1->readerConfig.name << endl;
141  unit_assert(reader1->readerConfig.name == "default");
142  reader1->readerConfig.name = "raw";
143  if (os_) *os_ << "reader1 config: " << reader1->readerConfig.name << endl;
144  unit_assert(reader1->readerConfig.name == "raw");
145 
146  Reader2* reader2 = readers.get<Reader2>();
147  unit_assert(reader2);
148  if (os_) *os_ << "reader2 config: " << reader2->readerConfig.color << endl;
149  unit_assert(reader2->readerConfig.color == "orange");
150  reader2->readerConfig.color = "purple";
151  if (os_) *os_ << "reader2 config: " << reader2->readerConfig.color << endl;
152  unit_assert(reader2->readerConfig.color == "purple");
153 
154  const ReaderList& const_readers = readers;
155  const Reader2* constReader2 = const_readers.get<Reader2>();
156  unit_assert(constReader2);
157  if (os_) *os_ << "constReader2 config: " << constReader2->readerConfig.color << endl;
158 
159  if (os_) *os_ << endl;
160 }

References Reader2::ReaderConfig::color, pwiz::msdata::ReaderList::get(), Reader1::ReaderConfig::name, os_, Reader1::readerConfig, Reader2::readerConfig, and unit_assert.

◆ testAccept()

void testAccept ( )

Definition at line 163 of file ReaderTest.cpp.

164 {
165  if (os_) *os_ << "testAccept()\n";
166 
167  ReaderList readers;
168  readers.push_back(ReaderPtr(new Reader1));
169  readers.push_back(ReaderPtr(new Reader2));
170 
171  if (os_) *os_ << "accept 1:\n";
172  unit_assert(readers.accept("1", "head"));
173  if (os_) *os_ << "accept 2:\n";
174  unit_assert(readers.accept("2", "head"));
175  if (os_) *os_ << "accept 3:\n";
176  unit_assert(!readers.accept("3", "head"));
177 
178  if (os_) *os_ << endl;
179 }

References pwiz::msdata::Reader::accept(), os_, and unit_assert.

◆ testRead()

void testRead ( )

Definition at line 182 of file ReaderTest.cpp.

183 {
184  if (os_) *os_ << "testRead()\n";
185 
186  ReaderList readers;
187  readers.push_back(ReaderPtr(new Reader1));
188  readers.push_back(ReaderPtr(new Reader2));
189 
190  MSData msd;
191 
192  // note: composite pattern with accept/read will cause two calls
193  // to accept(); the alternative is to maintain state between accept()
194  // and read(), which opens possibility for misuse.
195 
196  unit_assert(readers.get<Reader1>()->readerConfig.done == false);
197  if (readers.accept("1", "head"))
198  readers.read("1", "head", msd);
199  unit_assert(readers.get<Reader1>()->readerConfig.done == true);
200 
201  readers.get<Reader1>()->readerConfig.done = false;
202  unit_assert(readers.get<Reader2>()->readerConfig.done == false);
203  if (readers.accept("2", "head"))
204  readers.read("2", "head", msd);
205  unit_assert(readers.get<Reader1>()->readerConfig.done == false);
206  unit_assert(readers.get<Reader2>()->readerConfig.done == true);
207 
208  if (os_) *os_ << endl;
209 }

References pwiz::msdata::Reader::accept(), Reader1::ReaderConfig::done, Reader2::ReaderConfig::done, pwiz::msdata::ReaderList::get(), os_, pwiz::msdata::ReaderList::read(), Reader1::readerConfig, Reader2::readerConfig, and unit_assert.

◆ testIdentifyFileFormat()

void testIdentifyFileFormat ( )

Definition at line 212 of file ReaderTest.cpp.

213 {
214  ReaderPtr readers(new ExtendedReaderList);
215 
216  {ofstream fs("testSpectraDataFile.mzedML"); fs << "<?xml?><mzML>";}
217  unit_assert_operator_equal(MS_mzML_format, identifyFileFormat(readers, "testSpectraDataFile.mzedML"));
218  bfs::remove("testSpectraDataFile.mzedML");
219 
220  {ofstream fs("testSpectraDataFile.mzedXML"); fs << "<?xml?><mzXML>";}
221  unit_assert_operator_equal(MS_ISB_mzXML_format, identifyFileFormat(readers, "testSpectraDataFile.mzedXML"));
222  bfs::remove("testSpectraDataFile.mzedXML");
223 
224 
225  {
226  MSData msd;
229  config.format = MSDataFile::Format_MZ5;
230 #ifndef WITHOUT_MZ5
231  MSDataFile::write(msd, "testSpectraDataFile.Mz5", config);
232  unit_assert_operator_equal(MS_mz5_format, identifyFileFormat(readers, "testSpectraDataFile.Mz5"));
233 #endif
234  }
235  bfs::remove("testSpectraDataFile.Mz5");
236 
237  {ofstream fs("testSpectraDataFile.mGF"); fs << "MGF";}
238  unit_assert_operator_equal(MS_Mascot_MGF_format, identifyFileFormat(readers, "testSpectraDataFile.mGF"));
239  bfs::remove("testSpectraDataFile.mGF");
240 
241  {ofstream fs("testSpectraDataFile.Ms2"); fs << "MS2";}
242  unit_assert_operator_equal(MS_MS2_format, identifyFileFormat(readers, "testSpectraDataFile.Ms2"));
243  bfs::remove("testSpectraDataFile.Ms2");
244 
245  {ofstream fs("testSpectraDataFile.wiFF"); fs << "WIFF";}
246  unit_assert_operator_equal(MS_ABI_WIFF_format, identifyFileFormat(readers, "testSpectraDataFile.wiFF"));
247  bfs::remove("testSpectraDataFile.wiFF");
248 
249  {ofstream fs("_FUNC42.DAT"); fs << "Life, the Universe, and Everything";}
251  bfs::remove("_FUNC42.DAT");
252 }

References pwiz::msdata::MSDataFile::WriteConfig::format, pwiz::msdata::identifyFileFormat(), pwiz::identdata::examples::initializeTiny(), MS_ABI_WIFF_format, MS_ISB_mzXML_format, MS_Mascot_MGF_format, MS_MS2_format, MS_mz5_format, MS_mzML_format, MS_Waters_raw_format, unit_assert_operator_equal, and pwiz::identdata::IO::write().

Referenced by test().

◆ test()

void test ( )

Definition at line 255 of file ReaderTest.cpp.

256 {
257  testGet();
258  testAccept();
259  testRead();
261 }

References testAccept(), testGet(), testIdentifyFileFormat(), and testRead().

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 264 of file ReaderTest.cpp.

265 {
266  TEST_PROLOG_EX(argc, argv, "_MSData")
267 
268  try
269  {
270  if (argc==2 && !strcmp(argv[1],"-v")) os_ = &cout;
271  test();
272  }
273  catch (exception& e)
274  {
275  TEST_FAILED(e.what())
276  }
277  catch (...)
278  {
279  TEST_FAILED("Caught unknown exception.")
280  }
281 
283 }

References os_, test(), TEST_EPILOG, TEST_FAILED, and TEST_PROLOG_EX.

Variable Documentation

◆ os_

ostream* os_ = 0

Definition at line 39 of file ReaderTest.cpp.

pwiz::msdata::ReaderList::get
reader_type * get()
returns pointer to Reader of the specified type
Definition: Reader.hpp:213
pwiz::identdata::ReaderPtr
boost::shared_ptr< Reader > ReaderPtr
Definition: Reader.hpp:110
Reader2::readerConfig
ReaderConfig readerConfig
Definition: ReaderTest.cpp:96
pwiz::msdata::Reader::accept
bool accept(const std::string &filename, const std::string &head) const
return true iff Reader recognizes the file as one it should handle
Definition: Reader.hpp:84
MS_Mascot_MGF_format
MS_Mascot_MGF_format
Mascot MGF format: Mascot MGF file format.
Definition: cv.hpp:3669
unit_assert_operator_equal
#define unit_assert_operator_equal(expected, actual)
Definition: unit.hpp:92
pwiz::msdata::ReaderList::read
virtual void read(const std::string &filename, MSData &result, int runIndex=0, const Config &config=Config()) const
delegates to first child that identifies
pwiz::identdata::IO::write
PWIZ_API_DECL void write(minimxml::XMLWriter &writer, const CV &cv)
testAccept
void testAccept()
Definition: ReaderTest.cpp:137
pwiz::msdata::ReaderPtr
boost::shared_ptr< Reader > ReaderPtr
Definition: Reader.hpp:139
TEST_EPILOG
#define TEST_EPILOG
Definition: unit.hpp:183
testGet
void testGet()
Definition: ReaderTest.cpp:117
pwiz::msdata::ReaderList
Reader container (composite pattern).
Definition: Reader.hpp:148
pwiz::msdata::ExtendedReaderList
default ReaderList, extended to include vendor readers
Definition: ExtendedReaderList.hpp:37
MS_Waters_raw_format
MS_Waters_raw_format
Waters raw format: Waters data file format found in a Waters RAW directory, generated from an MS acqu...
Definition: cv.hpp:2184
Reader1::ReaderConfig::name
string name
Definition: ReaderTest.cpp:48
Reader2::ReaderConfig::done
bool done
Definition: ReaderTest.cpp:92
pwiz::identdata::examples::initializeTiny
PWIZ_API_DECL void initializeTiny(IdentData &mzid)
test
void test()
Definition: ReaderTest.cpp:186
MS_ISB_mzXML_format
MS_ISB_mzXML_format
ISB mzXML format: Institute of Systems Biology mzXML file format.
Definition: cv.hpp:2307
MS_mzML_format
MS_mzML_format
mzML format: Proteomics Standards Inititative mzML file format.
Definition: cv.hpp:2403
pwiz::msdata::MSDataFile::WriteConfig::format
Format format
Definition: MSDataFile.hpp:54
TEST_FAILED
#define TEST_FAILED(x)
Definition: unit.hpp:177
os_
ostream * os_
Definition: ReaderTest.cpp:34
Reader2::ReaderConfig::color
string color
Definition: ReaderTest.cpp:91
testIdentifyFileFormat
void testIdentifyFileFormat()
Definition: ReaderTest.cpp:212
Reader1::readerConfig
ReaderConfig readerConfig
Definition: ReaderTest.cpp:53
Reader2
Definition: ReaderTest.cpp:77
Reader1::ReaderConfig::done
bool done
Definition: ReaderTest.cpp:49
TEST_PROLOG_EX
#define TEST_PROLOG_EX(argc, argv, suffix)
Definition: unit.hpp:157
testRead
void testRead()
Definition: ReaderTest.cpp:156
pwiz::msdata::MSData
This is the root element of ProteoWizard; it represents the mzML element, defined as: intended to cap...
Definition: MSData.hpp:849
MS_mz5_format
MS_mz5_format
mz5 format: mz5 file format, modelled after mzML.
Definition: cv.hpp:6057
unit_assert
#define unit_assert(x)
Definition: unit.hpp:85
MS_ABI_WIFF_format
MS_ABI_WIFF_format
ABI WIFF format: Applied Biosystems WIFF file format.
Definition: cv.hpp:2295
MS_MS2_format
MS_MS2_format
MS2 format: MS2 file format for MS2 spectral data.
Definition: cv.hpp:4794
pwiz::msdata::identifyFileFormat
PWIZ_API_DECL CVID identifyFileFormat(const ReaderPtr &reader, const std::string &filepath)
tries to identify a filepath using the provided Reader or ReaderList; returns the CVID file format of...
Reader1
Definition: ReaderTest.cpp:37
pwiz::msdata::MSDataFile::WriteConfig
configuration for write()
Definition: MSDataFile.hpp:52