📄 ck_date.cpp
字号:
tmp1.swap(tmp0); CHK_DEFAULT(tmp0); CHK_NOT_DEFAULT(tmp1); CHK_EQU(tmp1,Nobj); CHK_EQU(tmp0,rt0); CHK_EQU(tmp1,rt1); tmp0.swap(tmp1); CHK_DEFAULT(tmp1); CHK_NOT_DEFAULT(tmp0); CHK_EQU(tmp0,Nobj); CHK_EQU(tmp0,rt0); CHK_EQU(tmp1,rt1); // chk time_zone effect tmp0=Nobj; tmp1.reset(); const WyStr& tz0( tmp0.time_zone() ); const WyStr& tz1( tmp1.time_zone() ); if(tmp0.time_zone()==tmp1.time_zone()) { WY_THROW( WyRet() ); } if(tmp0.time_zone()!=Nobj.time_zone()) { WY_THROW( WyRet() ); } if(tmp1.time_zone()!="UTC") { WY_THROW( WyRet() ); } if(tz0!=Nobj.time_zone()) { WY_THROW( WyRet() ); } if(tz1!="UTC") { WY_THROW( WyRet() ); } tmp0.swap(tmp1); if(tmp1.time_zone()!=Nobj.time_zone()) { WY_THROW( WyRet() ); } if(tmp0.time_zone()!="UTC") { WY_THROW( WyRet() ); } if(tz1!=Nobj.time_zone()) { WY_THROW( WyRet() ); } if(tz0!="UTC") { WY_THROW( WyRet() ); } } // set_utc(const WyTimeSpec&) { WyDate tmp(":Asia/Taipei",2000,1,2,3,4,5); if((r=tmp.set_utc(WyTimeSpec(-28800,Wy_Nano())))!=Ok) { WY_THROW(r); } if(tmp.year()!=1970) { WY_THROW( WyRet() ); } if(tmp.month()!=1) { WY_THROW( WyRet() ); } if(tmp.mday()!=1) { WY_THROW( WyRet() ); } if(tmp.hour()!=0) { WY_THROW( WyRet() ); } if(tmp.min()!=0) { WY_THROW( WyRet() ); } if(tmp.sec()!=0) { WY_THROW( WyRet() ); } if(tmp.utc_time()!=WyTimeSpec(-28800,Wy_Nano())) { WY_THROW( WyRet() ); } } // set_date(int,int,int,int,int,int) { WyDate tmp(":Asia/Taipei",2000,1,2,3,4,5); if((r=tmp.set_date(1970,1,1,0,0,0))!=Ok) { WY_THROW(r); } if(tmp.year()!=1970) { WY_THROW( WyRet() ); } if(tmp.month()!=1) { WY_THROW( WyRet() ); } if(tmp.mday()!=1) { WY_THROW( WyRet() ); } if(tmp.hour()!=0) { WY_THROW( WyRet() ); } if(tmp.min()!=0) { WY_THROW( WyRet() ); } if(tmp.sec()!=0) { WY_THROW( WyRet() ); } if(tmp.utc_time()!=WyTimeSpec(-28800,Wy_Nano())) { WY_THROW( WyRet() ); } } // add { WyDate tmp(":Asia/Taipei",2000,1,2,3,4,5); if((r=tmp.add(WyTimeSpec(61,Wy_Nano())))!=Ok) { WY_THROW(r); } if(tmp.min()!=5) { WY_THROW( WyRet() ); } if(tmp.sec()!=6) { WY_THROW( WyRet() ); } // 2000-1-2 03:05 6" if((r=tmp.add(WyTimeSpec(60*60,Wy_Nano())))!=Ok) { WY_THROW(r); } if(tmp.hour()!=4) { WY_THROW( WyRet() ); } if(tmp.min()!=5) { WY_THROW( WyRet() ); } if(tmp.sec()!=6) { WY_THROW( WyRet() ); } } // operator = { const ChkData& cd=cdt[0]; WyDate d0(cd.time_zone,cd.year,cd.month,cd.mday,cd.hour,cd.min,cd.sec),tmp; CHK_NOT_DEFAULT(d0); CHK_DEFAULT(tmp); tmp=d0; CHK_EQU(d0,tmp); } // operator += { WyDate tmp(":Asia/Taipei",2000,1,2,3,4,5); tmp+=WyTimeSpec(61,Wy_Nano()); if(tmp.min()!=5) { WY_THROW( WyRet() ); } if(tmp.sec()!=6) { WY_THROW( WyRet() ); } // 2000-1-2 03:05 6" tmp+=WyTimeSpec(60*60,Wy_Nano()); if(tmp.hour()!=4) { WY_THROW( WyRet() ); } if(tmp.min()!=5) { WY_THROW( WyRet() ); } if(tmp.sec()!=6) { WY_THROW( WyRet() ); } } // operator + { WyDate d0(":America/Chicaco",2000,1,2,3,4,5); WyDate tmp; CHK_DEFAULT(tmp); tmp= d0+WyTimeSpec(62,Wy_Nano()); if(d0.time_zone()!=tmp.time_zone()) { WY_THROW( WyRet() ); } if(tmp.min()!=5) { WY_THROW( WyRet() ); } if(tmp.sec()!=7) { WY_THROW( WyRet() ); } tmp.reset(); CHK_DEFAULT(tmp); tmp= WyTimeSpec(62,Wy_Nano())+d0; if(d0.time_zone()!=tmp.time_zone()) { WY_THROW( WyRet() ); } if(tmp.min()!=5) { WY_THROW( WyRet() ); } if(tmp.sec()!=7) { WY_THROW( WyRet() ); } } // chk move ctor { const WyTimeSpec tm(123,345); char buf[2*sizeof(WyDate)]; ::memset(buf,0,sizeof(buf)); WyDate*p=reinterpret_cast<WyDate*>(buf); new(p) WyDate("UTC",tm); new(p+1) WyDate(*p,Wy::ByMove); if(*(p+1)!=WyDate("UTC",tm)) { (p+1)->~WyDate(); WY_THROW( WyRet() ); } (p+1)->~WyDate(); }};static void t_error(void){ WyRet r; WyDate d1,d2; // WyDate(const char*,const WyTimeSpec&) try { WyDate tmp((const char*)0,WyTimeSpec()); WY_THROW( WyRet() ); } catch(const WyDate::Reply& e) { if(e!=Wym_EFAULT) { WY_THROW( WyRet(e) ); } } catch(...) { WY_TERMINATE(""); }; // WyDate(const &Str,const WyTimeSpec&) try { WyDate tmp(WyStr(""),WyTimeSpec()); WY_THROW( WyRet() ); } catch(const WyDate::Reply& e) { if(e!=Wym_EINVAL) { WY_THROW( WyRet(e) ); } } catch(...) { WY_TERMINATE(""); }; // WyDate(const char*,int,int,int,int,int,int) try { WyDate tmp((const char*)0,2000,1,2,3,4,5); WY_THROW( WyRet() ); } catch(const WyDate::Reply& e) { if(e!=Wym_EFAULT) { WY_THROW( WyRet(e) ); } } catch(...) { WY_TERMINATE(""); }; // WyDate(const WyStr&,int,int,int,int,int,int) try { WyDate tmp(WyStr(""),2000,1,2,3,4,5); WY_THROW( WyRet() ); } catch(const WyDate::Reply& e) { if(e!=Wym_EINVAL) { WY_THROW( WyRet(e) ); } } catch(...) { WY_TERMINATE(""); }; // WyDate(const WyStr&,int,int,int,int,int,int) try { WyDate tmp(WyStr(":Europe/Berlin"),-100,-2,-3,-4,-5,-6); WY_THROW( WyRet() ); } catch(const WyDate::Reply& e) { if(e!=Wym_EINVAL) { WY_THROW( WyRet(e) ); } } catch(...) { WY_TERMINATE(""); }; // reset(const char*,const WyTimeSpec&) { WyDate tmp; CHK_DEFAULT(tmp); if((r=tmp.reset((const char*)0,WyTimeSpec()))!=Wym_EFAULT) { WY_THROW(r); } CHK_DEFAULT(tmp); } // reset(const WyStr&,const WyTimeSpec&) { WyDate tmp; CHK_DEFAULT(tmp); if((r=tmp.reset(WyStr(""),WyTimeSpec()))!=Wym_EINVAL) { WY_THROW(r); } CHK_DEFAULT(tmp); } // reset(const char*,int,int,int,int,int,int) { WyDate tmp; CHK_DEFAULT(tmp); if((r=tmp.reset(":Africa/Freetown",3000,1,1,0,0,0))!=Wym_ERANGE) { WY_THROW(r); } CHK_DEFAULT(tmp); if((r=tmp.reset("",3000,1,1,0,0,0))!=Wym_EINVAL) { WY_THROW(r); } CHK_DEFAULT(tmp); } // reset(const WyStr&,int,int,int,int,int,int) { WyDate tmp; CHK_DEFAULT(tmp); if((r=tmp.reset(WyStr(":Africa/Freetown"),3000,1,1,0,0,0))!=Wym_ERANGE) { WY_THROW(r); } CHK_DEFAULT(tmp); if((r=tmp.reset(WyStr(""),3000,1,1,0,0,0))!=Wym_EINVAL) { WY_THROW(r); } CHK_DEFAULT(tmp); } // set_utc(const WyTimeSpec&) { } // set_date(int,int,int,int,int,int) { WyDate tmp; if((r=tmp.set_date(3000,1,1,0,0,0))!=Wym_ERANGE) { WY_THROW(r); } } // operator+=(const WyTimeSpec&) try { WyDate tmp("UTC",WyTimeSpec::max()); tmp+=WyTimeSpec(1,Wy_Nano()); WY_THROW( WyRet() ); } catch(const WyDate::Reply& e) { if(e!=Wym_ERANGE) { WY_THROW(r); } }; // operator +(const WyTimeSpec&,const WyDate&) try { WyDate tmp("UTC",WyTimeSpec::max()); tmp= tmp+WyTimeSpec(1,Wy_Nano()); WY_THROW( WyRet() ); } catch(const WyDate::Reply& e) { if(e!=Wym_ERANGE) { WY_THROW(r); } };};void ck_date(void){ t_date1(); t_error();};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -