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

📄 chk_sockaddrlocal.cpp

📁 一个不错
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2003   Check WySockAddrLocal 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 "wysockaddrlocal.h"#include "wy_atdestroy.h"#include <memory>#include <iostream>#if WYSOCKADDRLOCAL_VERSION!=31#error Test code is for WYSOCKADDRLOCAL_VERSION 31#endif//// Assert ff is default//static void assert_default(const WySockAddrLocal& laddr){ static const WySockAddrLocal Def_Obj; WyRet r; if(laddr.is_default()==false) {   WY_THROW( WyRet() ); } if(laddr.family()!=AF_LOCAL) {   WY_THROW( WyRet() ); } if(laddr._path().size()!=0) {   WY_THROW(r); } if(laddr!=Def_Obj) {   WY_THROW( WyRet() ); } if(laddr==Def_Obj) { } else {   WY_THROW( WyRet() ); }};static void assert_not_default(const WySockAddrLocal& laddr){ static const WySockAddrLocal Def_Obj; WyRet r; if(laddr.is_default()) {   WY_THROW( WyRet() ); } if(laddr.family()!=AF_LOCAL) {   WY_THROW( WyRet() ); } if(laddr._path().size()==0) {   WY_THROW(r); } if(laddr==Def_Obj) {   WY_THROW( WyRet() ); } if(laddr!=Def_Obj) { } else {   WY_THROW( WyRet() ); }};static void assert_equ(const WySockAddrLocal& a1,const WySockAddrLocal& a2){ if(a1.family()!=AF_LOCAL) {   WY_THROW( WyRet() ); } if(a2.family()!=AF_LOCAL) {   WY_THROW( WyRet() ); } if(Wy::_strcmp(a1._path(),a2._path())!=0) {   WY_THROW( WyRet() ); }};static void assert_equ(const WySockAddrLocal& a1,const struct ::sockaddr_un& a2){ if(a1.family()!=AF_LOCAL) {   WY_THROW( WyRet() ); } // Note: a2.sun_family not checked // if(Wy::_strcmp(a1._path(),a2.sun_path)!=0) {   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; // WySockAddrLocal()/WySockAddrLocal(copy) {   WySockAddrLocal a0;   CHK_DEFAULT(a0);   WySockAddrLocal a1(a0);   CHK_DEFAULT(a1);   CHK_EQU(a1,a0); } // WySockAddrLocal(const WyStr&) {   const WyStr Notation("abcd2");   WyStr pn0;   WyStr pn1(Notation);   WyStr str;   WySockAddrLocal a0(pn0);   CHK_DEFAULT(a0);   WySockAddrLocal a1(pn1);   CHK_NOT_DEFAULT(a1);   if(a1._path()!=Notation) {     WY_THROW( WyRet() );   }   WySockAddrLocal a2(Notation);   CHK_EQU(a1,a2);   if((r=str.reset(WySockAddrLocal::PathMaxLen-1,char('A')))!=Ok) {     WY_THROW( WyRet(r) );   }   WySockAddrLocal a3(str);   if(str!=a3._path()) {     WY_THROW( WyRet() );   }   if((r=str.reset(WySockAddrLocal::PathMaxLen,char('A')))!=Ok) {     WY_THROW( WyRet(r) );   }   try {     WySockAddrLocal a4(str);     a4.is_default();     WY_THROW( WyRet() );   }   catch(const WySockAddrLocal::Reply& e) {     if(e!=Wym_ENAMETOOLONG) {       throw;     }     // FALLTHROUGH   }; } // chk ops on parameter const ::sockaddr_un& {   struct ::sockaddr_un saddr;   const char* SPath="helo4";   ::strcpy(saddr.sun_path,SPath);   WySockAddrLocal tmp1(saddr,SUN_LEN(&saddr));   CHK_EQU(tmp1,saddr);   if(Wy::_strcmp(tmp1._path(),saddr.sun_path)!=0) {     WY_THROW( WyRet() );   }   WySockAddrLocal tmp2;   CHK_DEFAULT(tmp2);   tmp2.reset(saddr,SUN_LEN(&saddr));   CHK_EQU(tmp2,saddr);   CHK_EQU(tmp2,tmp1);   WySockAddrLocal tmp3(saddr,sizeof(saddr));   CHK_NOT_DEFAULT(tmp3);   tmp2.reset();   CHK_DEFAULT(tmp2); } // WySockAddrLocal(const char*) {  WySockAddrLocal tmp1("");  CHK_DEFAULT(tmp1);  WySockAddrLocal tmp2("abb");  CHK_NOT_DEFAULT(tmp2);  if(Wy::_strcmp(tmp2._path(),"abb")!=0) {    WY_THROW( WyRet() );  } } // WySockAddrLocal(WyCSeg) {  WyCSeg path("path");  WySockAddrLocal tmp1(path);  CHK_NOT_DEFAULT(tmp1);  if(Wy::_strcmp(tmp1._path(),path)!=0) {    WY_THROW( WyRet() );  } } // notation(WyStr&) {  WyCSeg path("testpath.12");  WySockAddrLocal laddr(path);  WyStr str(WyCSeg("xx"));  if((r=laddr.notation(str))!=Ok) {    WY_THROW( r );  }  if(str!=path) {    WY_THROW( WyRet() );  }    laddr.reset();  if((r=laddr.notation(str))!=Ok) {    WY_THROW( r );  }  if(str.size()!=0) {    WY_THROW( WyRet() );  } } // reset() {   WySockAddrLocal a0;   a0.reset();   CHK_DEFAULT(a0);   WySockAddrLocal a1("x");   CHK_NOT_DEFAULT(a1);   a1.reset();   CHK_DEFAULT(a1); } // reset(const WySockAddrLocal&) {   WySockAddrLocal a0;   WySockAddrLocal a1;   a1.reset(a0);   CHK_DEFAULT(a0);   CHK_DEFAULT(a1);   CHK_EQU(a1,a0);   if((r=a1.reset(WyStr()))!=Ok) {     WY_THROW(r);   }   if((r=a1.reset(WyStr("helo")))!=Ok) {     WY_THROW(r);   }   CHK_NOT_DEFAULT(a1); } // reset(sockaddr_un,size_t) {   struct ::sockaddr_un saddr;   const char* SPath="helo6";   ::strcpy(saddr.sun_path,SPath);   WySockAddrLocal tmp1;   CHK_DEFAULT(tmp1);   if((r=tmp1.reset(saddr,SUN_LEN(&saddr)))!=Ok) {     WY_THROW(r);   }   CHK_EQU(tmp1,saddr); } // reset(const WyStr&) {  WyStr pn("ddd");  WyRet r;  WySockAddrLocal tmp;  CHK_DEFAULT(tmp);  if((r=tmp.reset(pn))!=Ok) {     WY_THROW(r);   }  CHK_NOT_DEFAULT(tmp); } // reset(const WyStr&) {  WyStr str(2,char(0));  WyRet r;  str+='a';  WySockAddrLocal tmp;  CHK_DEFAULT(tmp);  if((r=tmp.reset(str))!=Ok) {    WY_THROW(r);  }  CHK_NOT_DEFAULT(tmp);  if(str!=tmp._path()) {    WY_THROW( WyRet() );  }  if(str!=Wy::wrd(tmp)) {    WY_THROW( WyRet() );  } } // operator= {   WySockAddrLocal a0;   WySockAddrLocal a1;   a1=a0;   CHK_DEFAULT(a0);   CHK_DEFAULT(a1);   if((r=a0.reset(WyStr("helo")))!=Ok) {     WY_THROW(r);   }   a1=a0;   CHK_NOT_DEFAULT(a0);   CHK_NOT_DEFAULT(a1);   CHK_EQU(a0,a1);   a0.reset();   CHK_DEFAULT(a0);   a0=WyStr("helo");   CHK_EQU(a0,a1);   a0="";   CHK_DEFAULT(a0);   a0="1234";   if(Wy::_strcmp(a0._path(),"1234")!=0) {     WY_THROW( WyRet() );   }   WyCSeg seg("asdf");   a0=seg;   if(Wy::_strcmp(a0._path(),seg)!=0) {     WY_THROW( WyRet() );   } } // _path {   WySockAddrLocal a0;   CHK_DEFAULT(a0);   WyStr str;      if(a0._path().size()!=0) {     WY_THROW(r);   }   WyStr LStr(WySockAddrLocal::PathMaxLen-1,'x');                         if((r=a0.reset(LStr))!=Ok) {     WY_THROW(r);   }   if(LStr!=a0._path()) {     WY_THROW(r);   }   if(LStr!=Wy::wrd(a0)) {     WY_THROW( WyRet() );   }   LStr+='x';    // add one char   if((r=a0.reset(LStr))!=Wym_ENAMETOOLONG) {     WY_THROW(r);   } } // operator==/!= {   WySockAddrLocal a0,a1;   const WyStr Str("helo");   if(a0==a1) {   } else {     WY_THROW( WyRet() );   }   if(a0!=a1) {     WY_THROW( WyRet() );   }   if(a0==WyStr()) {   } else {     WY_THROW( WyRet() );   }   if(a0!=WyStr()) {     WY_THROW( WyRet() );   } else {   }   if(a0==WyCSeg("",size_t(0))) {   } else {     WY_THROW( WyRet() );   }   if(a0!=WyCSeg("",size_t(0))) {     WY_THROW( WyRet() );   }   if((r=a1.reset(Str))!=Ok) {     WY_THROW(r);   }   if(a1==a0) {     WY_THROW( WyRet() );   }   if(a1!=a0) {   } else {     WY_THROW( WyRet() );   }   if(a1==a0._path()) {     WY_THROW( WyRet() );   }   if(a1!=a0._path()) {   } else {     WY_THROW( WyRet() );   }   if(a1==WyStr(a0._path())) {     WY_THROW( WyRet() );   }   if(a1!=WyStr(a0._path())) {   } else {     WY_THROW( WyRet() );   }   if(WyStr("helo")==a1) {   } else {     WY_THROW( WyRet() );   }   if(WyStr("helo")!=a1) {     WY_THROW( WyRet() );   }   if(Str.cseg()==a1) {   } else {     WY_THROW( WyRet() );   }   if(Str.cseg()!=a1) {     WY_THROW( WyRet() );   } }  // operator==/!= {  WyStr str("helo");  WySockAddrLocal tmp0(str);  if(tmp0==str) {  } else {    WY_THROW( WyRet() );  }  if(str==tmp0) {  } else {    WY_THROW( WyRet() );  }  if(tmp0!=str) {    WY_THROW( WyRet() );  }  if(str!=tmp0) {    WY_THROW( WyRet() );  }  WyCSeg tseg("he\0lo",5);  if((r=tmp0.reset(tseg))!=Ok) {    WY_THROW( WyRet(r) );  }  if(tmp0==tseg) {  } else {    WY_THROW( WyRet() );  }  if(tseg==tmp0) {  } else {    WY_THROW( WyRet() );  }  if(tmp0!=tseg) {    WY_THROW( WyRet() );  }  if(tseg!=tmp0) {    WY_THROW( WyRet() );  }/*  struct sockaddr_un un_addr;  std::strcpy(un_addr.sun_path,str.c_str());  tmp0=str;  if(tmp0==un_addr) {  } else {    WY_THROW( WyRet() );  }  if(un_addr==tmp0) {  } else {    WY_THROW( WyRet() );  }  if(tmp0!=un_addr) {    WY_THROW( WyRet() );

⌨️ 快捷键说明

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