Пример #1
0
    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);
}