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

📄 chk_fh.cpp

📁 一个不错
💻 CPP
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2004   Check functions in wyfilehandle.h   Build: make chk_fh*/#include "wyfilehandle.h"#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <iostream>#if WYFILEHANDLE_VERSION!=31#error Test code is for WYFILEHANDLE_VERSION 31#endif//// Assert ff is default//static void assert_default(const WyFileHandle& ff){ if(ff.is_default()==false) {   WY_THROW( WyRet() ); } if(ff.fd()!=WY__DEFAULT_FD) {   WY_THROW( WyRet() ); }};#define CHK_DEFAULT(p)\    try { assert_default(p); } catch(...) { WY_THROW( WyRet()); }//// Check basic operations on default object//static void t1(void){ WyRet r; WyFileHandle NObj;     // non-default object for test as argument CHK_DEFAULT(NObj);  {  WyFileHandle tmp(NObj);  CHK_DEFAULT(tmp); } {  WyFileHandle tmp(0);  if(tmp.is_default()) {    WY_THROW( WyRet() );  }  if(tmp.fd()!=0) {    WY_THROW( WyRet() );  } }  {  WyFileStat stt;  if((r=NObj.stat(stt))!=Wym_EBADF) {    WY_THROW(r);  } } {   WyFileHandle tmp(-2);   if(tmp.fd()!=-2) {     WY_THROW( WyRet() );   } } // reset()/reset(WyFileHandle)/reset(int)/= {   WyFileHandle tmp;   tmp.reset();   CHK_DEFAULT(tmp);   tmp.reset(2);   if(tmp.fd()!=2) {     WY_THROW( WyRet() );   }   tmp.reset(3);   if(tmp.fd()!=3) {     WY_THROW( WyRet() );   }   tmp.reset(-5);   if(tmp.fd()!=-5) {     WY_THROW( WyRet() );   }   tmp.reset(INT_MAX);   if(tmp.fd()!=INT_MAX) {     WY_THROW( WyRet() );   }    tmp.reset(INT_MIN);   if(tmp.fd()!=INT_MIN) {     WY_THROW( WyRet() );   }    tmp=WY__DEFAULT_FD;   if(tmp.fd()!=WY__DEFAULT_FD) {     WY_THROW( WyRet() );   }   tmp=INT_MAX;   if(tmp.fd()!=INT_MAX) {     WY_THROW( WyRet() );   }   WyFileHandle tmp2(tmp);   if(tmp2!=tmp) {     WY_THROW( WyRet() );   }   if(tmp2==tmp) {   } else {     WY_THROW( WyRet() );   } }};static void t_error_filehandle(void){};//// Check Wy::...//static void t2(void){ const char TmpName[]="tmpfile.remove.me";  WyRet r; try {   int tfd;   Wy::unlink((const char*)TmpName);   if((tfd=::creat(TmpName,O_RDONLY|S_IRUSR))==-1) {     WY_THROW( WyRet(WyReply(errno)) );   }   if((r=Wy::access((const char*)TmpName,R_OK))!=Ok) {     WY_THROW(r);   }   if((r=Wy::access((const char*)TmpName,W_OK))==Ok) {     WY_THROW(r);   }   if((r=Wy::access(WyStr(TmpName),R_OK))!=Ok) {     WY_THROW(r);   }   if((r=Wy::chdir((const char*)"nodir"))!=Wym_ENOENT) {     WY_THROW(r);   }   if((r=Wy::chdir(WyStr("nodir")))!=Wym_ENOENT) {     WY_THROW(r);   }   {     WyStr str;     if((r=Wy::getcwd(str))!=Ok) {       WY_THROW(r);     }     std::cout << "Current directory =" << str.c_str() << std::endl;   }   // just check functions exist   Wy::chown((const char*)TmpName,0,0);   Wy::chown(WyStr(TmpName),0,0);   Wy::chmod((const char*)TmpName,S_IRUSR);   Wy::chmod(WyStr(TmpName),S_IRUSR);   Wy::link(TmpName,TmpName);   Wy::link(TmpName,WyStr(TmpName));   Wy::link(WyStr(TmpName),TmpName);   Wy::link(WyStr(TmpName),WyStr(TmpName));   if((r=Wy::unlink(WyStr(TmpName)))!=Ok) {     WY_THROW(r);   } } catch(...) {   ::unlink(TmpName);   throw; }};static const WyStr chdr(                  "+---------------+\n"                  "| main() caught:|\n"                  "+---------------+\n");int main(void) throw()try { std::cout << "Checking wyfilehandle.h ...\n"; if(std::strcmp(WyFileHandle::class_name,"WyFileHandle")!=0) {   WY_THROW( WyRet() ); } t1(); t_error_filehandle(); t2(); 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 + -