virtual void read(const std::string& filename, const std::string& head, TraData& result, int documentIndex = 0) const { if (documentIndex != 0) throw ReaderFail("[Reader_traML::read] multiple documents not supported"); shared_ptr<istream> is(new pwiz::util::random_access_compressed_ifstream(filename.c_str())); if (!is.get() || !*is) throw runtime_error(("[Reader_traML::read] Unable to open file " + filename).c_str()); switch (type(*is)) { case Type_traML: { Serializer_traML serializer; serializer.read(is, result); break; } case Type_Unknown: default: { throw runtime_error("[Reader_traML::read] This isn't happening."); } } fillInCommonMetadata(filename, result); }
void testWriteRead() { if (os_) *os_ << "testWriteRead()" << endl; TraData td; examples::initializeTiny(td); Serializer_traML tramlSerializer; ostringstream oss; tramlSerializer.write(oss, td); if (os_) *os_ << "oss:\n" << oss.str() << endl; shared_ptr<istringstream> iss(new istringstream(oss.str())); TraData td2; tramlSerializer.read(iss, td2); Diff<TraData, DiffConfig> diff(td, td2); if (os_ && diff) *os_ << diff << endl; unit_assert(!diff); }