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}
ReaderConfig readerConfig
ReaderConfig readerConfig
Reader container (composite pattern).
Definition Reader.hpp:150
reader_type * get()
returns pointer to Reader of the specified type
Definition Reader.hpp:213
ostream * os_
boost::shared_ptr< Reader > ReaderPtr
Definition Reader.hpp:139
#define unit_assert(x)
Definition unit.hpp:85

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

Referenced by test().

◆ 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}
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

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

Referenced by test().

◆ 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}
virtual void read(const std::string &filename, MSData &result, int runIndex=0, const Config &config=Config()) const
delegates to first child that identifies
This is the root element of ProteoWizard; it represents the mzML element, defined as: intended to cap...
Definition MSData.hpp:850

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.

Referenced by test().

◆ 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}
default ReaderList, extended to include vendor readers
MS_ABI_WIFF_format
ABI WIFF format: Applied Biosystems WIFF file format.
Definition cv.hpp:2295
MS_mzML_format
mzML format: Proteomics Standards Inititative mzML file format.
Definition cv.hpp:2403
MS_mz5_format
mz5 format: mz5 file format, modelled after mzML.
Definition cv.hpp:6057
MS_MS2_format
MS2 format: MS2 file format for MS2 spectral data.
Definition cv.hpp:4794
MS_Mascot_MGF_format
Mascot MGF format: Mascot MGF file format.
Definition cv.hpp:3669
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
MS_ISB_mzXML_format
ISB mzXML format: Institute of Systems Biology mzXML file format.
Definition cv.hpp:2307
PWIZ_API_DECL void initializeTiny(MSData &msd)
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...
configuration for write()
static void write(const MSData &msd, const std::string &filename, const WriteConfig &config=WriteConfig(), const pwiz::util::IterationListenerRegistry *iterationListenerRegistry=0)
static write function for any MSData object; iterationListenerRegistry may be used for progress updat...
#define unit_assert_operator_equal(expected, actual)
Definition unit.hpp:92

References pwiz::msdata::MSDataFile::WriteConfig::format, pwiz::msdata::identifyFileFormat(), pwiz::msdata::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::msdata::MSDataFile::write().

Referenced by test().

◆ test()

void test ( )

Definition at line 255 of file ReaderTest.cpp.

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

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

Referenced by main().

◆ 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}
void test()
#define TEST_PROLOG_EX(argc, argv, suffix)
Definition unit.hpp:157
#define TEST_EPILOG
Definition unit.hpp:183
#define TEST_FAILED(x)
Definition unit.hpp:177

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.

Referenced by main(), testAccept(), testGet(), and testRead().