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

📄 chk_sockaddrinet4.cpp

📁 一个不错
💻 CPP
📖 第 1 页 / 共 2 页
字号:
     WY_THROW( WyRet() );   }   WySockAddrINet4 a4(a3);   CHK_EQU(a3,a4);   const WySockAddrINet4::IPAddr ip5;   const WySockAddrINet4 a5(ip5,0);   CHK_DEFAULT(a5); } // chk ops on parameter const ::sockaddr_in& {   struct ::sockaddr_in saddr;   const uint16_t PortNum=2467;   const uint32_t IPNum=0x5678abcd;   saddr.sin_port=htons(PortNum);   saddr.sin_addr.s_addr=htonl(IPNum);   WySockAddrINet4 tmp(saddr);   if(tmp.ip()!=IPNum) {     WY_THROW( WyRet() );   }   if(tmp.port()!=PortNum) {     WY_THROW( WyRet() );   }   WySockAddrINet4 tmp2;   CHK_DEFAULT(tmp2);   tmp2.reset(saddr);   if(tmp2.ip()!=IPNum) {     WY_THROW( WyRet() );   }   if(tmp2.port()!=PortNum) {     WY_THROW( WyRet() );   }   CHK_EQU(tmp,tmp2);   WySockAddrINet4 tmp3;   tmp3=saddr;   CHK_EQU(tmp,tmp2);   if(tmp3==saddr) {   } else {     WY_THROW( WyRet() );   }   if(tmp3!=saddr) {     WY_THROW( WyRet() );   }/*   if(saddr==tmp3) {   } else {     WY_THROW( WyRet() );   }   if(saddr!=tmp3) {     WY_THROW( WyRet() );   }*/ } // operator==/!= {   WySockAddrINet4 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() );   } } // notation/wrd {  const WyCSeg IPStr("1.0.11.222");  WySockAddrINet4::InPortType PortNum=40000;  WySockAddrINet4 saddr( WySockAddrINet4::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() {   WySockAddrINet4 a0;   a0.reset();   CHK_DEFAULT(a0);   WySockAddrINet4 a1(5,6);   CHK_NOT_DEFAULT(a1);   a1.reset();   CHK_DEFAULT(a1); } // reset(const WySockAddrINet4&)/reset(ulong,ushort)/reset(const WyStr&,ushort) {   WySockAddrINet4 a0;   WySockAddrINet4 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() );   }      WySockAddrINet4 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()!=0x02020303) {     WY_THROW( WyRet() );   } } // operator= {   WySockAddrINet4 a0;   WySockAddrINet4 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; WySockAddrINet4 A0; WySockAddrINet4 N0; CHK_DEFAULT(A0); CHK_DEFAULT(N0); N0.reset("12.34.56.78",8); CHK_NOT_DEFAULT(N0); // constructor {   WySockAddrINet4 a0(N0);   CHK_NOT_DEFAULT(a0);   CHK_EQU(a0,N0); } // operator==/!= {   WySockAddrINet4 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 {   WySockAddrINet4 a0(N0);   CHK_NOT_DEFAULT(a0);   CHK_EQU(a0,N0);   a0.reset();   CHK_DEFAULT(a0); } // _swap {  WySockAddrINet4 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,N0);  if((r=tmp0._swap(tmp1))!=Ok) {    WY_THROW(r);  }  CHK_DEFAULT(tmp1);  CHK_NOT_DEFAULT(tmp0);  CHK_EQU(tmp0,N0);  Wy_SockAddr* bp_tmp0(&tmp0);  if((r=tmp1._swap(*bp_tmp0))!=Ok) {    WY_THROW(r);  }  CHK_DEFAULT(tmp0);  CHK_NOT_DEFAULT(tmp1);  CHK_EQU(tmp1,N0); } // _alloc {   WySockAddrINet4 tmp;   WySockAddrINet4* cptr( tmp._alloc(r) );   if(r!=Ok) {     WY_THROW(r);   }   if(cptr==0) {     WY_THROW( WyRet() );   }   Wy_AtDestroy<void,Wy_SockAddr*> rrid(Wy::_delete_one,cptr);   CHK_DEFAULT(*cptr); } // reset {   WySockAddrINet4 a0(N0);   CHK_EQU(a0,N0);   a0.reset(N0);   CHK_EQU(a0,N0);   a0.reset(A0);   CHK_EQU(a0,A0);   CHK_DEFAULT(a0);   a0.reset("1.2.3.4",5);   WySockAddrINet4 a1;   a1.reset(a0);   CHK_EQU(a0,a1); } // operator= {   WySockAddrINet4 a0(N0);   a0=A0;   CHK_DEFAULT(a0);   CHK_EQU(a0,A0);   a0=N0;   CHK_EQU(a0,N0); } // chk move ctor {  const WySockAddrINet4::IPAddr TstIP("10.20.30.40");  const uint16_t TstPort=567;  char raw_buf[2*sizeof(WySockAddrINet4)];  ::memset(raw_buf,0,sizeof(raw_buf));  WySockAddrINet4* const p1( reinterpret_cast<WySockAddrINet4*>(raw_buf) );  WySockAddrINet4* const p2(p1+1);  new(p1) WySockAddrINet4(TstIP,TstPort);  if((p1->is_default()==true)||     (p1->port()!=TstPort)||     (p1->ip()!=TstIP) ) {    p1->~WySockAddrINet4();    WY_THROW(r);  }  // move *p1 to p2  try {    new(p2) WySockAddrINet4(*p1,Wy::ByMove);  }  catch(...) {    p1->~WySockAddrINet4();    throw;  };  if((p2->is_default()==true)||     (p2->port()!=TstPort)||     (p2->ip()!=TstIP) ) {    p2->~WySockAddrINet4();    WY_THROW(r);  }  p2->~WySockAddrINet4(); }};static void t_exception(void){ // Test copy constructor exception // {   try {     WyStr tbuf("abc.efg.1234zaz");    // should cause error     WySockAddrINet4 tmp(tbuf,4);     tmp.reset();          // supress unuse warning     WY_THROW( WyRet() );  // no expected exception   }   catch(const WySockAddrINet4::IPAddr::Reply& e) {     if(e!=Wym_EADDRNOTAVAIL) {       WyRet r=e;       WY_THROW(r);     }     // FALL_THROUGH    }; }; // chk WySockAddrINet4(const char*,unsigned short) {   try {     WySockAddrINet4 tmp((const char*)0,1);     tmp.reset();        // supress unused warning of compiler     WY_THROW( WyRet() );   }   catch(const WySockAddrINet4::IPAddr::Reply& e) {     if(e!=Wym_EFAULT) {       throw;     }     // FALL_THROUGH    }; };};static void t_sockaddr(void){ const WyCSeg IPStr("1.0.11.222"); WySockAddrINet4::InPortType PortNum=40000; WySockAddrINet4 saddr( WySockAddrINet4::IPAddr(IPStr),PortNum); WyStr str(WyCSeg("x")); WyRet r; const Wy_SockAddr &sref( saddr ); if(sref.family()!=AF_INET) {   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<WySockAddrINet4>();/* // chk struct in_addr { unsigned long s_addr; } // (simple check) {   ck_array< ::in_addr >();   Wy_Array< ::in_addr > tmp;   ::in_addr iaddr={ 123 };   tmp.push_back(iaddr);   if(tmp.size()!=1) {     WY_THROW( WyRet() );   }   if(tmp[0].s_addr!=iaddr.s_addr) {     WY_THROW( WyRet() );   }   tmp.push_back(::in_addr());   if(tmp.size()!=2) {     WY_THROW( WyRet() );   }   if(tmp[1].s_addr!=0) {     WY_THROW( WyRet() );   } }*//* // chk struct sockaddr_in {   //ck_array< ::sockaddr_in > tmp;       // wont compile   Wy_Array< ::sockaddr_in > tmp;   ::sockaddr_in sa;   ::in_addr iaddr={ 321 };   sa.sin_family=AF_INET;   ::memcpy(&sa.sin_addr,&iaddr,sizeof(sa.sin_addr));   sa.sin_port=5678;   tmp.push_back(sa);   if(tmp.size()!=1) {     WY_THROW( WyRet() );   }   if(tmp[0].sin_family!=AF_INET) {     WY_THROW( WyRet() );   }   if(tmp[0].sin_addr.s_addr!=iaddr.s_addr) {     WY_THROW( WyRet() );   }   if(tmp[0].sin_port!=5678) {     WY_THROW( WyRet() );   }   tmp.push_back(::sockaddr_in());   if(tmp.size()!=2) {     WY_THROW( WyRet() );   }   if(tmp[1].sin_family!=0) {     WY_THROW( WyRet() );   }   if(tmp[1].sin_addr.s_addr!=0) {     WY_THROW( WyRet() );   }   if(tmp[1].sin_port!=0) {     WY_THROW( WyRet() );   } }*/};static WyStr chdr("+---------------+\n"                  "| main() caught:|\n"                  "+---------------+\n");int main(void) throw()try { std::cout << "Checking wysockaddrinet4.h ...\n"; if(WySockAddrINet4::family()!=AF_INET) {   WY_THROW( WyRet() ); } chk_ipaddr(); t1(); t2(); t_exception(); t_sockaddr(); {   WySockAddrINet4::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 WySockAddrINet4()) {};      ~CkNew() { if(_p) { delete _p; _p=0; } };       WySockAddrINet4* _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 + -