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

📄 chk_sockaddrinet6.cpp

📁 一个不错
💻 CPP
📖 第 1 页 / 共 2 页
字号:
   if(tmp3!=saddr) {     WY_THROW( WyRet() );   }   if(saddr==tmp3) {   } else {     WY_THROW( WyRet() );   }   if(saddr!=tmp3) {     WY_THROW( WyRet() );   } } // notation / wrd {  const WyCSeg IPStr("1:22:33:4::");  WySockAddrINet6::InPortType PortNum=50000;  WySockAddrINet6 saddr( WySockAddrINet6::IPAddr(IPStr),PortNum);  WyStr str(WyCSeg("x"));  if((r=saddr.notation(str))!=Ok) {    WY_THROW(r);  }  WyStr str2=WyStr(IPStr)+'.'+Wy::wrd(PortNum);  if(str!=str2) {    WY_THROW( WyRet() );  }  if(Wy::wrd(saddr)!=str2) {    WY_THROW( WyRet() );  } } // reset() {   WySockAddrINet6 a0;   a0.reset();   CHK_DEFAULT(a0);   WySockAddrINet6 a1("::1",2);   if(a1.is_default()) {     WY_THROW( WyRet() );   }   a1.reset();   CHK_DEFAULT(a1); } // reset(const WySockAddrINet6&)/reset(IPAddr&,uint16_t) {   WySockAddrINet6 a0;   WySockAddrINet6 a1;   a1.reset(a0);   CHK_DEFAULT(a0);   CHK_DEFAULT(a1);   CHK_EQU(a0,a1);   a0.reset("::5",6);   a1.reset(a0);   if(a0.is_default()) {     WY_THROW( WyRet() );   }   if(a1!=a0) {     WY_THROW( WyRet() );   }   if(a0.port()!=6) {     WY_THROW( WyRet() );   }   if(a1.port()!=6) {     WY_THROW( WyRet() );   }   if(a0.ip()!=a1.ip()) {     WY_THROW( WyRet() );   }   if(a0._flowinfo()!=a1._flowinfo()) {     WY_THROW( WyRet() );   }   if(a0._scope_id()!=a1._scope_id()) {     WY_THROW( WyRet() );   }      WySockAddrINet6 a2;   a2.reset((const char*)"2::2:3:3",9);   a0=a1=a2;   CHK_EQU(a0,a1);   CHK_EQU(a0,a2);   CHK_EQU(a1,a0);   CHK_EQU(a1,a2);   CHK_EQU(a2,a0);   CHK_EQU(a2,a1);   if(a0.port()!=9) {     WY_THROW( WyRet() );   }   if(a1.port()!=9) {     WY_THROW( WyRet() );   }   if(a2.ip()!="2::2:3:3") {     WY_THROW( WyRet() );   } } // operator==/!= {   WySockAddrINet6 a0,a1;   if(a0==a1) {   } else {     WY_THROW( WyRet() );   }   if(a0!=a1) {     WY_THROW( WyRet() );   }   a1.reset("::3",4);   if(a1==a0) {     WY_THROW( WyRet() );   }   if(a1!=a0) {   } else {     WY_THROW( WyRet() );   } } // operator==/!= (const ::sockaddr_in6&, const WySockAddrINet6&) {   WySockAddrINet6 a0("::3:8",749);   struct ::sockaddr_in6 a1(a0.wy_sockaddr_ref());   if(a1==a0) {   } else {     WY_THROW( WyRet() );   }   if(a1!=a0) {     WY_THROW( WyRet() );   }   WySockAddrINet6 a2;   struct ::sockaddr_in6 a3(a2.wy_sockaddr_ref());   if(a3==a2) {   } else {     WY_THROW( WyRet() );   }   if(a3!=a2) {     WY_THROW( WyRet() );   } }  // operator= {   WySockAddrINet6 a0;   WySockAddrINet6 a1;   a1=a0;   CHK_DEFAULT(a0);   CHK_DEFAULT(a1);   a0.reset("::4",5);   a1=a0;   if(a0.is_default()) {     WY_THROW( WyRet() );   }   if(a1.is_default()) {     WY_THROW( WyRet() );   }   if(a1!=a0) {     WY_THROW( WyRet() );   }   if(a1==a0) {   } else {     WY_THROW( WyRet() );   }   if(a0.port()!=5) {     WY_THROW( WyRet() );   }   if(a1.port()!=5) {     WY_THROW( WyRet() );   } }};// Check basic operations on non-default object//static void t2(void){ WyRet r; WySockAddrINet6 A0; WySockAddrINet6 N0; CHK_DEFAULT(A0); CHK_DEFAULT(N0); N0.reset("12::34:56:78",8); CHK_NOT_DEFAULT(N0); // constructor {   WySockAddrINet6 a0(N0);   CHK_NOT_DEFAULT(a0); } // operator==/!= {   WySockAddrINet6 a0(N0),a1(a0);   CHK_NOT_DEFAULT(a0);   CHK_NOT_DEFAULT(a1);   if(a0==a1) {   } else {     WY_THROW( WyRet() );   }   if(a0!=a1) {     WY_THROW( WyRet() );   } }  // reset {   WySockAddrINet6 a0(N0);   CHK_NOT_DEFAULT(a0);   a0.reset();   CHK_DEFAULT(a0); } // _swap {  WySockAddrINet6 tmp0(N0),tmp1,tmp2;  CHK_NOT_DEFAULT(tmp0);  CHK_DEFAULT(tmp1);  CHK_DEFAULT(tmp2);  CHK_NOT_DEFAULT(N0);  if((r=tmp1._swap(tmp2))!=Ok) {    WY_THROW(r);  }  CHK_DEFAULT(tmp1);  CHK_DEFAULT(tmp2);  if((r=tmp1._swap(tmp0))!=Ok) {    WY_THROW(r);  }  CHK_DEFAULT(tmp0);  CHK_NOT_DEFAULT(tmp1);  //CHK_EQU(tmp1,NObj);  if((r=tmp0._swap(tmp1))!=Ok) {    WY_THROW(r);  }  CHK_DEFAULT(tmp1);  CHK_NOT_DEFAULT(tmp0);  //CHK_EQU(tmp0,NObj);  Wy_SockAddr* bp_tmp0(&tmp0);  if((r=tmp1._swap(*bp_tmp0))!=Ok) {    WY_THROW(r);  }  CHK_DEFAULT(tmp0);  CHK_NOT_DEFAULT(tmp1); } // chk _alloc {   WySockAddrINet6 tmp;   WySockAddrINet6* p( tmp._alloc(r) );   if(r!=Ok) {     WY_THROW(r);   }   if(p==0) {     WY_THROW( WyRet() );   }   Wy_AtDestroy<void,Wy_SockAddr*> rrid(Wy::_delete_one,p);   CHK_DEFAULT(*p); } // reset {   WySockAddrINet6 a0(N0);   if(a0!=N0) {     WY_THROW( WyRet() );   }   a0.reset(N0);   a0.reset(A0);   CHK_DEFAULT(a0);   a0.reset("1:2::3:4",5);   WySockAddrINet6 a1;   a1.reset(a0);   if(a1!=a0) {     WY_THROW( WyRet() );   } } // operator= {   WySockAddrINet6 a0(N0);   a0=A0;   CHK_DEFAULT(a0); } // get_notation {   WySockAddrINet6 a0(N0);   if(a0.is_default()) {     WY_THROW( WyRet() );   }   WyStr str,str2;      if((r=a0.ip().notation(str))!=Ok) {     WY_THROW(r);   }   if(str!="12::34:56:78") {   // N0 notation is "12.34.56.78"     std::cerr << str.c_str() << std::endl;     WY_THROW( WyRet() );   }   if((r=a0.ip().notation(str2))!=Ok) {     WY_THROW(r);   }   if(str2!=str) {     WY_THROW( WyRet() );   }   if(Wy::wrd(a0.ip())!=str) {     WY_THROW( WyRet() );   } } // chk _alloc not override {   class T : public WySockAddrINet6 {   } tmp;   Wy_SockAddr* p=tmp._alloc(r);   if(r!=Wym_ENOSYS) {     if(r==Ok) {       delete p;     }     WY_THROW(r);   } } // chk move ctor {  const WySockAddrINet6::IPAddr TstIP("::40");  const uint16_t TstPort=567;  char raw_buf[2*sizeof(WySockAddrINet6)];  ::memset(raw_buf,0,sizeof(raw_buf));  WySockAddrINet6* const p1( reinterpret_cast<WySockAddrINet6*>(raw_buf) );  WySockAddrINet6* const p2(p1+1);  new(p1) WySockAddrINet6(TstIP,TstPort);  if((p1->is_default()==true)||     (p1->port()!=TstPort)||     (p1->ip()!=TstIP) ) {    p1->~WySockAddrINet6();    WY_THROW(r);  }  // move *p1 to p2  try {    new(p2) WySockAddrINet6(*p1,Wy::ByMove);  }  catch(...) {    p1->~WySockAddrINet6();    throw;  };  if((p2->is_default()==true)||     (p2->port()!=TstPort)||     (p2->ip()!=TstIP) ) {    p2->~WySockAddrINet6();    WY_THROW(r);  }  p2->~WySockAddrINet6(); }};static void t_exception(void){ //WyRet r; // Test copy constructor exception // try {   WyStr tbuf("abc.efg.1234zaz");    // should cause error   WySockAddrINet6 tmp(tbuf,4);   tmp.reset();          // supress unuse warning   WY_THROW( WyRet() );  // no expected exception } catch(const WySockAddrINet6::IPAddr::Reply& e) {   if(e!=Wym_EADDRNOTAVAIL) {     WyRet r=e;     WY_THROW(r);   }   // FALL_THROUGH  } catch(...) {   WyRet r;   WY_THROW(r); }; // chk WySockAddrINet6(const char*,unsigned short) try {   WySockAddrINet6 tmp((const char*)0,1);   tmp.reset();        // supress unused warning of compiler   WY_THROW( WyRet() ); } catch(const WySockAddrINet6::IPAddr::Reply& e) {   if(e!=Wym_EFAULT) {     WyRet r=e;     WY_THROW(r);   }   // FALL_THROUGH  }; {   WySockAddrINet6 tmp;   try {     tmp.reset((const char*)0,1);     WY_THROW( WyRet() );   }   catch(const WySockAddrINet6::IPAddr::Reply& e) {     if(e!=Wym_EFAULT) {       throw;     }     // FALLTHROUGH   }; }};static void t_sockaddr(void){ const WyCSeg IPStr("1:22:33:4::"); WySockAddrINet6::InPortType PortNum=50000; WySockAddrINet6 saddr( WySockAddrINet6::IPAddr(IPStr),PortNum); WyStr str(WyCSeg("x")); WyRet r; const Wy_SockAddr &sref( saddr ); if(sref.family()!=AF_INET6) {   WY_THROW( WyRet() ); } if((r=sref.notation(str))!=Ok) {   WY_THROW(r); } if(str!=WyStr(IPStr)+'.'+Wy::wrd(PortNum)) {   WY_THROW( WyRet() ); }};#include "wy_array.h"#include "ck_array.h"static void t_array(void){ ck_array<WySockAddrINet6>();/* // chk struct in6_addr { unsigned long s6_addr[16]; } // (simple check) {   ck_array< ::in6_addr >();   Wy_Array< ::in6_addr > tmp;   ::in6_addr iaddr={ {1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6} };   tmp.push_back(iaddr);   if(tmp.size()!=1) {     WY_THROW( WyRet() );   }   if(memcmp(&tmp[0].s6_addr,&iaddr,sizeof(iaddr))) {     WY_THROW( WyRet() );   }   tmp.push_back(::in6_addr());   if(tmp.size()!=2) {     WY_THROW( WyRet() );   }   //if(tmp[1].s6_addr!=0) {   //  WY_THROW( WyRet() );   //} }*//* // chk struct sockaddr_in6 {   //ck_array< ::sockaddr_in6 > tmp;        // wont compile   Wy_Array< ::sockaddr_in6 > tmp;   ::sockaddr_in6 sa;   ::in6_addr iaddr={ {21,2,3,4,5,6,7,8,9,0,1,2,3,4,5,16} };   sa.sin6_family=AF_INET6;   ::memcpy(&sa.sin6_addr,&iaddr,sizeof(sa.sin6_addr));   sa.sin6_port=5678;   tmp.push_back(sa);   if(tmp.size()!=1) {     WY_THROW( WyRet() );   }   if(tmp[0].sin6_family!=AF_INET6) {     WY_THROW( WyRet() );   }   if(memcmp(&tmp[0].sin6_addr,&iaddr,sizeof(iaddr))) {     WY_THROW( WyRet() );   }   if(tmp[0].sin6_port!=5678) {     WY_THROW( WyRet() );   }   tmp.push_back(::sockaddr_in6());   if(tmp.size()!=2) {     WY_THROW( WyRet() );   }   if(tmp[1].sin6_family!=0) {     WY_THROW( WyRet() );   }   //if(memcmp(&tmp[1].sin6_addr,&iaddr,sizeof(iaddr))) {   //  WY_THROW( WyRet() );   //}   if(tmp[1].sin6_port!=0) {     WY_THROW( WyRet() );   } }*/};static WyStr chdr("+---------------+\n"                  "| main() caught:|\n"                  "+---------------+\n");int main(void) throw()try { std::cout << "Checking wysockaddrinet6.h ...\n"; if(WySockAddrINet6::family()!=AF_INET6) {   WY_THROW( WyRet() ); } chk_ipaddr(); t1(); t2(); t_exception(); t_sockaddr(); {   WySockAddrINet6::IPAddr tmp;   WyStr str;   WyRet r;   if((r=tmp.notation(str))!=Ok) {     WY_THROW(r);   }   if(Wy::wrd(tmp)!=str) {     WY_THROW( WyRet() );   }   std::cout << "IPAddr()=\"" << str.c_str() << "\"\n"; } // chk new {   class CkNew {     public:      CkNew() : _p(new WySockAddrINet6()) {};      ~CkNew() { if(_p) { delete _p; _p=0; } };       WySockAddrINet6* _p;   } cn;   CHK_DEFAULT(*cn._p); } t_array(); std::cout << "Checked Ok\n"; return(0);}catch(const WyRet& e) { std::cerr << chdr.c_str() << Wy::wrd(e).c_str() << std::endl; return(-1);}catch(const std::exception& e) { std::cerr << chdr.c_str() << "std::exception" << std::endl; return(-1);}catch(...) { std::cerr << chdr.c_str() << "unknown unwind" << std::endl; return(-1);};

⌨️ 快捷键说明

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