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

📄 chk_sockaddrinet4.cpp

📁 一个不错
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2003   Check WySockAddrINet4 public members   Build: make chk_sockaddrlocal   Note: Test data files should exist in the working directory         Files may be created in the working directory and unlinked*/#include "wysockaddrinet4.h"#include "wy_atdestroy.h"#include <memory>#include <iostream>#if WYSOCKADDRINET_VERSION!=31#error Test code is for WYSOCKADDRINET_VERSION 31#endifstatic bool equ(const WySockAddrINet4::IPAddr& a1, const ::in_addr& a2){  return ::memcmp(&a1.wy_addr_ref(),&a2,sizeof(::in_addr))==0;};// Check WySockAddrINet4::IPAddr//static void chk_ipaddr(void){ WyRet r; // IPAddr(),IPAddr(const IPAddr&),IPAddr(const ::in_addr&),.. {  WySockAddrINet4::IPAddr tmp1;  ::in_addr ina( tmp1.c_addr() );  if(ina.s_addr!=INADDR_ANY) {    WY_THROW( WyRet() );  }  if(equ(tmp1,ina)==false) {    WY_THROW( WyRet() );  }  if(tmp1.is_default()==false) {    WY_THROW( WyRet() );  }  WySockAddrINet4::IPAddr tmp2(tmp1);  if(equ(tmp2,ina)==false) {    WY_THROW( WyRet() );  }  if(tmp1!=tmp2) {    WY_THROW( WyRet() );  }  if(tmp1==tmp2) {  } else {    WY_THROW( WyRet() );  }  if(tmp2.is_default()==false) {    WY_THROW( WyRet() );  }  WySockAddrINet4::IPAddr tmp3(ina);  if(equ(tmp3,ina)==false) {    WY_THROW( WyRet() );  }  if(tmp3!=tmp1) {    WY_THROW( WyRet() );  }  if(tmp3.is_default()==false) {    WY_THROW( WyRet() );  }  WySockAddrINet4::IPAddr tmp4("0.0.0.0");  if(equ(tmp4,ina)==false) {    WY_THROW( WyRet() );  }  if(tmp4!=tmp1) {    WY_THROW( WyRet() );  }  if(tmp4.is_default()==false) {    WY_THROW( WyRet() );  }  WySockAddrINet4::IPAddr tmp5( WyStr("0.0.0.0") );  if(equ(tmp5,ina)==false) {    WY_THROW( WyRet() );  }  if(tmp5!=tmp1) {    WY_THROW( WyRet() );  }  if(tmp5.is_default()==false) {    WY_THROW( WyRet() );  }  WySockAddrINet4::IPAddr tmp6(uint32_t(0));  if(equ(tmp6,ina)==false) {    WY_THROW( WyRet() );  }  if(tmp6!=tmp1) {    WY_THROW( WyRet() );  }  if(tmp6.is_default()==false) {    WY_THROW( WyRet() );  } } // notation {   WySockAddrINet4::IPAddr tmp;   WyStr str,str2;   if((r=tmp.notation(str))!=Ok) {     WY_THROW(r);   }   if(str!="0.0.0.0") {     WY_THROW( WyRet() );   }   if((r=tmp.notation(str2))!=Ok) {     WY_THROW(r);   }   if(str2!=str) {     WY_THROW( WyRet() );   }   if(Wy::wrd(tmp)!=str) {     WY_THROW( WyRet() );   }   WySockAddrINet4::IPAddr tmp2("1.2.3.4");   if((r=tmp2.notation(str))!=Ok) {     WY_THROW(r);   }   if(str!="1.2.3.4") {    WY_THROW( WyRet() );   }   if((r=tmp2.notation(str2))!=Ok) {     WY_THROW(r);   }   if(str2!=str) {     WY_THROW( WyRet() );   }   if(Wy::wrd(tmp2)!=str) {     WY_THROW( WyRet() );   }   WySockAddrINet4::IPAddr tmp3(uint32_t(0x1ff));   if((r=tmp3.notation(str))!=Ok) {     WY_THROW(r);   }   if(str!="0.0.1.255") {    WY_THROW( WyRet() );   }   if((r=tmp3.notation(str2))!=Ok) {     WY_THROW(r);   }   if(str2!=str) {     WY_THROW( WyRet() );   }   if(Wy::wrd(tmp3)!=str) {     WY_THROW( WyRet() );   } } // reset() {   const char* AName="2.3.4.5";   const WySockAddrINet4::IPAddr Tmp1,Tmp2(AName);   WySockAddrINet4::IPAddr tmp;   ::in_addr ina;   tmp.reset();   if(tmp.is_default()==false) {     WY_THROW( WyRet() );   }   tmp.reset(Tmp1);   if(tmp.is_default()==false) {     WY_THROW( WyRet() );   }   tmp.reset(Tmp2);   if(tmp!=Tmp2) {     WY_THROW( WyRet() );   }   tmp.reset();   if(tmp.is_default()==false) {     WY_THROW( WyRet() );   }   ina=Tmp2.c_addr();   tmp.reset(ina);   if(tmp!=ina) {     WY_THROW( WyRet() );   }   tmp.reset(AName);   if(tmp.is_default()) {     WY_THROW( WyRet() );   }   if(tmp!=Tmp2) {     WY_THROW( WyRet() );   }   tmp.reset( WyStr(AName) );   if(tmp.is_default()) {     WY_THROW( WyRet() );   }   if(tmp!=Tmp2) {     WY_THROW( WyRet() );   }   tmp.reset(0x02030405);   if(tmp.is_default()) {     WY_THROW( WyRet() );   }   if(tmp!=Tmp2) {     WY_THROW( WyRet() );   } } {   const WySockAddrINet4::IPAddr Tmp1,Tmp2("6.6.126.6");   WySockAddrINet4::IPAddr tmp1(Tmp1),tmp2(Tmp2);   tmp1.swap(tmp2);   if(tmp1!=Tmp2) {     WY_THROW( WyRet() );   }   if(tmp2!=Tmp1) {     WY_THROW( WyRet() );   }   tmp2.swap(tmp2);   if(tmp2!=Tmp1) {     WY_THROW( WyRet() );   }   WyStr str;   if((r=Tmp2.notation(str))!=Ok) {     WY_THROW( WyRet() );   }   if(str!="6.6.126.6") {     WY_THROW( WyRet() );   }   if(Wy::wrd(Tmp2)!=str) {     WY_THROW( WyRet() );   } } {   const WySockAddrINet4::IPAddr Tmp1,Tmp2("0.5.6.7");   WySockAddrINet4::IPAddr tmp;   tmp=Tmp2;   if(tmp!=Tmp2) {     WY_THROW( WyRet() );   }   tmp=Tmp1;   if(tmp!=Tmp1) {     WY_THROW( WyRet() );   } } // operator ==/!= {   const WyStr IpStr("1.2.6.4");   const WySockAddrINet4::IPAddr Tmp1,Tmp2(IpStr);   uint32_t InAddrAny=INADDR_ANY;   if(Tmp2==Tmp2) {   } else {     WY_THROW( WyRet() );   }   if(Tmp2!=Tmp2) {     WY_THROW( WyRet() );   }   if(InAddrAny==Tmp1) {   } else {     WY_THROW( WyRet() );   }   if(InAddrAny!=Tmp1) {     WY_THROW( WyRet() );   }   if(IpStr==Tmp2) {   } else {     WY_THROW( WyRet() );   }   if(IpStr!=Tmp2) {     WY_THROW( WyRet() );   }   if(IpStr.c_str()==Tmp2) {   } else {     WY_THROW( WyRet() );   }   if(IpStr.c_str()!=Tmp2) {     WY_THROW( WyRet() );   } } // chk error {   try {     WySockAddrINet4::IPAddr tmp("xxx");     tmp.reset();          // supress unused warning     WY_THROW( WyRet() );   }   catch(const WySockAddrINet4::IPAddr::Reply& e) {     if(e!=Wym_EADDRNOTAVAIL) {       throw;     }     // FALLTHROUGH   }; }; // chk error {   try {     WySockAddrINet4::IPAddr tmp( WyStr("xxx") );     tmp.reset();          // supress unused warning     WY_THROW( WyRet() );   }   catch(const WySockAddrINet4::IPAddr::Reply& e) {     if(e!=Wym_EADDRNOTAVAIL) {       throw;     }     // FALLTHROUGH   };   {     WySockAddrINet4::IPAddr tmp;     if((r=tmp.reset("xxy"))!=Wym_EADDRNOTAVAIL) {       WY_THROW(r);     }     if((r=tmp.reset(WyStr("xxy")))!=Wym_EADDRNOTAVAIL) {       WY_THROW(r);     }   } } // chk error ==/!= (const char*) {   WySockAddrINet4::IPAddr tmp;   if(tmp==(const char*)0) {     WY_THROW( WyRet() );   }   if(tmp!=(const char*)0) {   } else {     WY_THROW( WyRet() );   } } // chk error ==/!= (const WyStr&) {   WySockAddrINet4::IPAddr tmp;   if(tmp==WyStr()) {     WY_THROW( WyRet() );   }   if(tmp!=WyStr()) {   } else {     WY_THROW( WyRet() );   }   if(tmp==(const char*)0) {     WY_THROW( WyRet() );   }   if(tmp!=(const char*)0) {   } else {     WY_THROW( WyRet() );   } } // chk error ==/!=( const WyStr&,WySockAddrINet4::IPAddr) {   WySockAddrINet4::IPAddr tmp;   if(WyStr()==tmp) {     WY_THROW( WyRet() );   }   if(WyStr()!=tmp) {   } else {     WY_THROW( WyRet() );   }   if((const char*)0==tmp) {     WY_THROW( WyRet() );   }   if((const char*)0!=tmp) {   } else {     WY_THROW( WyRet() );   } } // chk _alloc not override {   class T : public WySockAddrINet4 {   } tmp;   Wy_SockAddr* p=tmp._alloc(r);   if(r!=Wym_ENOSYS) {     if(r==Ok) {       delete p;     }     WY_THROW(r);   } } // chk move ctor {  const uint32_t TstIP=0x1a2b3c4d;  char raw_buf[2*sizeof(WySockAddrINet4::IPAddr)];  ::memset(raw_buf,0,sizeof(raw_buf));  WySockAddrINet4::IPAddr* const p1( reinterpret_cast<WySockAddrINet4::IPAddr*>(raw_buf) );  WySockAddrINet4::IPAddr* const p2(p1+1);  new(p1) WySockAddrINet4::IPAddr(TstIP);  if((p1->is_default()==true)||     (p1->c_addr().s_addr!=htonl(TstIP)) ) {    p1->WySockAddrINet4::IPAddr::~IPAddr();    WY_THROW(r);  }  // move *p1 to p2  try {    new(p2) WySockAddrINet4::IPAddr(*p1,Wy::ByMove);  }  catch(...) {    p1->WySockAddrINet4::IPAddr::~IPAddr();    throw;  };  if((p2->is_default()==true)||     (p2->c_addr().s_addr!=htonl(TstIP)) ) {    p2->WySockAddrINet4::IPAddr::~IPAddr();    WY_THROW(r);  }  p2->WySockAddrINet4::IPAddr::~IPAddr(); }};// Assert ff is default//static void assert_default(const WySockAddrINet4& ff){ static const WySockAddrINet4 Def_Obj; if(ff.is_default()==false) {   WY_THROW( WyRet() ); } if(ff!=Def_Obj) {   WY_THROW( WyRet() ); } if(ff==Def_Obj) { } else {   WY_THROW( WyRet() ); } if(ff.port()!=0) {   WY_THROW( WyRet() ); } if(ff.ip()!=INADDR_ANY) {   WY_THROW( WyRet() ); }};static void assert_not_default(const WySockAddrINet4& ff){ static const WySockAddrINet4 Def_Obj; if(ff.is_default()) {   WY_THROW( WyRet() ); } if(ff==Def_Obj) {   WY_THROW( WyRet() ); } if(ff!=Def_Obj) { } else {   WY_THROW( WyRet() ); } if((ff.port()==0)&&(ff.ip()!=INADDR_ANY)) {   WY_THROW( WyRet() ); } };static void assert_equ(const WySockAddrINet4& a1,const WySockAddrINet4& a2){ if(a1!=a2) {   WY_THROW( WyRet() ); } if(a1.port()!=a2.port()) {   WY_THROW( WyRet() ); } if(a1.ip()!=a2.ip()) {   WY_THROW( WyRet() ); }};#define CHK_DEFAULT(p)\    try { assert_default(p); } catch(...) { WY_THROW( WyRet()); }#define CHK_NOT_DEFAULT(p)\    try { assert_not_default(p); } catch(...) { WY_THROW( WyRet()); }#define CHK_EQU(a1,a2)\    try { assert_equ((a1),(a2)); } catch(...) { WY_THROW( WyRet()); }// Check basic operations on default object//static void t1(void){ WyRet r; // constructor {   WySockAddrINet4 a0;   CHK_DEFAULT(a0);   WySockAddrINet4 a1(a0);   CHK_DEFAULT(a0);   CHK_DEFAULT(a1);   CHK_EQU(a0,a1);      WySockAddrINet4 a2(1,2);   if(a2.is_default()) {     WY_THROW( WyRet() );   }   if(a2.port()!=2) {     WY_THROW( WyRet() );   }   if(a2.ip()!=1) {     WY_THROW( WyRet() );   }   WySockAddrINet4 a3("1.2.3.4",9);   if(a3.is_default()) {     WY_THROW( WyRet() );   }   if(a3.port()!=9) {     WY_THROW( WyRet() );   }   if(a3.ip()!=WySockAddrINet4::IPAddr(0x01020304)) {

⌨️ 快捷键说明

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