⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testtime_serialize.cpp

📁 C++的一个好库。。。现在很流行
💻 CPP
字号:
/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
 * Use, modification and distribution is subject to the
 * Boost Software License, Version 1.0. (See accompanying
 * file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
 * Author: Jeff Garland, Bart Garst
 */
 
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/posix_time/time_serialize.hpp>
#include <boost/date_time/testfrmwk.hpp>
#include <fstream>

using namespace boost;
using namespace posix_time;
using namespace gregorian;

template<class archive_type, class temporal_type>
void save_to(archive_type& ar, const temporal_type& tt)
{
  ar << tt;
}

int main(){
  // originals
  date d(2002, Feb, 14);
#if defined(BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG)
  time_duration td(12,13,52,123456789);
#else
  time_duration td(12,13,52,123456);
#endif
  ptime pt(d, td);
  time_period tp(pt, ptime(date(2002, Oct, 31), hours(19)));
  ptime sv_pt1(not_a_date_time);
  ptime sv_pt2(pos_infin);
  time_duration sv_td(neg_infin);

  // for loading in from archive
  date d2(not_a_date_time);
  time_duration td2(1,0,0);
  ptime pt2(d2, td2);
  time_period tp2(pt2, hours(1));
  ptime sv_pt3(min_date_time);
  ptime sv_pt4(min_date_time);
  time_duration sv_td2(0,0,0);
  
  std::ofstream ofs("tmp_file");

  // NOTE: DATE_TIME_XML_SERIALIZE is only used in testing and is
  // defined in the testing Jamfile
#if defined(DATE_TIME_XML_SERIALIZE)
  std::cout << "Running xml archive tests" << std::endl;
  archive::xml_oarchive oa(ofs);
#else
  std::cout << "Running text archive tests" << std::endl;
  archive::text_oarchive oa(ofs);
#endif // DATE_TIME_XML_SERIALIZE

  try{
#if defined(DATE_TIME_XML_SERIALIZE)
    save_to(oa, BOOST_SERIALIZATION_NVP(pt));
    save_to(oa, BOOST_SERIALIZATION_NVP(sv_pt1));
    save_to(oa, BOOST_SERIALIZATION_NVP(sv_pt2));
    save_to(oa, BOOST_SERIALIZATION_NVP(tp));
    save_to(oa, BOOST_SERIALIZATION_NVP(td));
    save_to(oa, BOOST_SERIALIZATION_NVP(sv_td));
#else
    save_to(oa, pt);
    save_to(oa, sv_pt1);
    save_to(oa, sv_pt2);
    save_to(oa, tp);
    save_to(oa, td);
    save_to(oa, sv_td);
#endif // DATE_TIME_XML_SERIALIZE
  }catch(archive::archive_exception ae){
    std::string s(ae.what());
    check("Error writing to archive: " + s, false);
    ofs.close();
    return printTestStats();
  }

  ofs.close();

  std::ifstream ifs("tmp_file");
#if defined(DATE_TIME_XML_SERIALIZE)
  archive::xml_iarchive ia(ifs);
#else
  archive::text_iarchive ia(ifs);
#endif // DATE_TIME_XML_SERIALIZE

  try{
#if defined(DATE_TIME_XML_SERIALIZE)
    ia >> BOOST_SERIALIZATION_NVP(pt2);
    ia >> BOOST_SERIALIZATION_NVP(sv_pt3);
    ia >> BOOST_SERIALIZATION_NVP(sv_pt4);
    ia >> BOOST_SERIALIZATION_NVP(tp2);
    ia >> BOOST_SERIALIZATION_NVP(td2);
    ia >> BOOST_SERIALIZATION_NVP(sv_td2);
#else
    ia >> pt2;
    ia >> sv_pt3;
    ia >> sv_pt4;
    ia >> tp2;
    ia >> td2;
    ia >> sv_td2;
#endif // DATE_TIME_XML_SERIALIZE
  }catch(archive::archive_exception ae){
    std::string s(ae.what());
    check("Error readng from archive: " + s, false);
    ifs.close();
    return printTestStats();
  }

  ifs.close();
 
  check("ptime", pt == pt2);
  check("special_values ptime (nadt)", sv_pt1 == sv_pt3);
  check("special_values ptime (pos_infin)", sv_pt2 == sv_pt4);
  check("time_period", tp == tp2);
  check("time_duration", td == td2);
  check("special_values time_duration (neg_infin)", sv_td == sv_td2);

  return printTestStats();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -