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

📄 chk_reply.cpp

📁 一个不错
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2003   Build: make chk_reply*/#include "wyret.h"#include <stdexcept>#include <iostream>#if WYR_REPLY_VERSION!=31#error Check code is for WYR_REPLY_VERSION 31#endifstatic void t_reply(void){};static void chk_default(const WyReply& em){ if(em.is_default()==false) {   throw WyRet(); } {  WyReply tmp;  if(em.operator->()!=tmp.operator->()) {   throw WyRet();  } } if(em->c_repcode()!=-1) {   throw WyRet(); } static const char* DeiMsg="General error"; static const size_t DeiMsgLen=strlen(DeiMsg); if(strcmp(em->c_repstr(),DeiMsg)!=0) {   throw WyRet(); } char buf[16]; if(em->get_reply(buf,sizeof(buf))!=DeiMsgLen) {   throw WyRet(); } if(memcmp(buf,DeiMsg,DeiMsgLen)!=0) {   throw WyRet(); }};#define CHK_DEFAULT(em) try { chk_default(em); } catch(const WyRet& e) {\                            WY_THROW( WyRet(e) ); };// Check the public interface of WyReply//static void t1(void){ WyReply e1;            // default constructor WyReply e2(ENOENT);    // construct by errno WyReply e3(e2);        // constructor by copy WyReply e4(0);         // construct by errno (Ok object) char buf[128]; if(WyReply().operator->()!=e1.operator->()) {   WY_THROW( WyRet() ); } // Basic construct and compare // if(e1.is_default()==false) {   WY_THROW(WyRet()); } if(e2.is_default()==true) {   WY_THROW( WyRet() ); } if(e3.is_default()==true) {   WY_THROW( WyRet() ); } if(e1==e2) {   WY_THROW( ::WyRet() ); } if(e1!=e2) { } else {   WY_THROW( WyRet() ); } if(e2!=e3) {   WY_THROW( WyRet() ); } if(e2==e3) { } else {   WY_THROW( WyRet() ); } CHK_DEFAULT(e1); // chk Ok==WyReply(0) // if(WyReply(0)!=Ok) {   WY_THROW( WyRet() ); } if(e1==Ok) {   WY_THROW( WyRet() ); } if(e1!=Ok) { } else {   WY_THROW( WyRet() ); } if(e2==Ok) {   WY_THROW( WyRet() ); } if(e2!=Ok) { } else {   WY_THROW( WyRet() ); } if(e4==Ok) { } else {   WY_THROW( WyRet() ); } if(e4!=Ok) {   WY_THROW( WyRet() ); } if(e4.is_default()) {   WY_THROW( WyRet() ); } // chk WyReply(en) {  WyReply tmp(Wy::_max_errno+1);  if(tmp.is_default()==false) {    WY_THROW( WyRet() );  }  CHK_DEFAULT(tmp);  WyReply tmp2(ENOENT);  if(tmp2->c_repcode()!=ENOENT) {    WY_THROW( WyRet() );  }; } // chk WyReply(Wy_RepInfo&) (manual example) {  class AppErrInfo : public Wy_RepInfo {    public:      AppErrInfo(int ec, const char* estr) throw()         : Wy_RepInfo(ec, estr) {};      size_t get_reply(char* buf, size_t blen) const throw()         { return Wy_RepInfo::get_reply(buf,blen); };      void set_reply(const char*, size_t) throw()         {};  };  static AppErrInfo e1(45,"Bad Input");  const WyReply BadInput(e1);  if(BadInput->c_repcode()!=45) {    WY_THROW( WyRet() );  }  if(BadInput->get_reply(buf,sizeof(buf))!=9) {    WY_THROW( WyRet() );  }  if(::memcmp(buf,e1.c_repstr(),9)!=0) {    WY_THROW( WyRet() );  } } // chk reset // e4.reset(); CHK_DEFAULT(e4); if(e2.is_default()) {   WY_THROW( WyRet() ); } e4.reset(e2); if(e4!=e2) {   WY_THROW( WyRet() ); } e4.reset(Wym_EBADF); if(e4!=Wym_EBADF) {   WY_THROW( WyRet() ); } if(e4.reset(4)!=4) {   WY_THROW( WyRet() ); } if(e4->c_repcode()!=4) {   WY_THROW( WyRet() ); } if(e4.reset(Wy::_max_errno+1)!=-1) {   WY_THROW( WyRet() ); } CHK_DEFAULT(e4); e4.reset(Wym_EBADF); if(e4.reset(-2)!=-1) {   WY_THROW( WyRet() ); } CHK_DEFAULT(e4); // chk operator= // if(e4==e2) {   WY_THROW( WyRet() ); } e4=e2; if(e4!=e2) {   WY_THROW( WyRet() ); } e4=Wym_EBADF; if(e4!=Wym_EBADF) {   WY_THROW( WyRet() ); } if(e4.is_default()) {   WY_THROW( WyRet() ); } e4=200; CHK_DEFAULT(e4); // chk some c_repcode // if(Wym_EPERM->c_repcode()!=EPERM) {   WY_THROW( WyRet() ); } if(Wym_ENOENT->c_repcode()!=ENOENT) {   WY_THROW( WyRet() ); } if(Wym_ESRCH->c_repcode()!=ESRCH) {   WY_THROW( WyRet() ); } if(Wym_EINTR->c_repcode()!=EINTR) {   WY_THROW( WyRet() ); } if(Wym_ENETRESET->c_repcode()!=ENETRESET) {   WY_THROW( WyRet() ); } if(Wym_EMEDIUMTYPE->c_repcode()!=EMEDIUMTYPE) {   WY_THROW( WyRet() ); } if(Wym_E127->c_repcode()!=127) {   WY_THROW( WyRet() ); } // chk set_reply(..)/get_reply(..) // {   char buf[64];   if(Ok->get_reply(buf,sizeof(buf))!=7) {     WY_THROW( WyRet() );   }   if(memcmp(buf,"Success",7)!=0) {     WY_THROW( WyRet() );   }   const char Ustr[]="Test Msg for Ok";   Ok->set_reply(Ustr,sizeof(Ustr));   if(Ok->get_reply(buf,sizeof(buf))!=sizeof(Ustr)) {     WY_THROW( WyRet() );   }   if(memcmp(buf,Ustr,sizeof(Ustr))!=0) {     WY_THROW( WyRet() );   }   Ok->set_reply("Success",8);  // including trailing zero   if(Ok->c_repcode()!=0) {     WY_THROW( WyRet() );   } } // chk move ctor {  WyReply raw_buf[2];      // ok WyReply is discardable  ::memset(raw_buf,0,sizeof(raw_buf));  WyReply* const p1( reinterpret_cast<WyReply*>(&raw_buf[0]) );  WyReply* const p2( reinterpret_cast<WyReply*>(&raw_buf[1]) );  new(p1) WyReply(Wym_ENOENT);  if(*p1!=Wym_ENOENT) {    p1->~WyReply();    WY_THROW( WyRet() );  }  // move *p1 to p2  new(p2) WyReply(*p1,Wy::ByMove);  if(*p2!=Wym_ENOENT) {    p2->~WyReply();    WY_THROW( WyRet() );  }  p2->~WyReply(); }};// Check the mapped errno 0-127//static void t2(void){ if((Ok!=WyReply(0))||(Ok->c_repcode()!=0)) {   WY_THROW( WyRet() ); } if((Wym_EPERM!=WyReply(EPERM))||(Wym_EPERM->c_repcode()!=EPERM)) {   WY_THROW( WyRet() ); } if((Wym_ENOENT!=WyReply(ENOENT))||(Wym_ENOENT->c_repcode()!=ENOENT)) {   WY_THROW( WyRet() ); } if((Wym_ESRCH!=WyReply(ESRCH))||(Wym_ESRCH->c_repcode()!=ESRCH)) {   WY_THROW( WyRet() ); } if((Wym_EINTR!=WyReply(EINTR))||(Wym_EINTR->c_repcode()!=EINTR)) {   WY_THROW( WyRet() ); } if((Wym_EIO!=WyReply(EIO))||(Wym_EIO->c_repcode()!=EIO)) {   WY_THROW( WyRet() ); } if((Wym_ENXIO!=WyReply(ENXIO))||(Wym_ENXIO->c_repcode()!=ENXIO)) {   WY_THROW( WyRet() ); } if((Wym_E2BIG!=WyReply(E2BIG))||(Wym_E2BIG->c_repcode()!=E2BIG)) {   WY_THROW( WyRet() ); } if((Wym_ENOEXEC!=WyReply(ENOEXEC))||(Wym_ENOEXEC->c_repcode()!=ENOEXEC)) {   WY_THROW( WyRet() ); } if((Wym_EBADF!=WyReply(EBADF))||(Wym_EBADF->c_repcode()!=EBADF)) {   WY_THROW( WyRet() ); } if((Wym_ECHILD!=WyReply(ECHILD))||(Wym_ECHILD->c_repcode()!=ECHILD)) {   WY_THROW( WyRet() ); } if((Wym_EAGAIN!=WyReply(EAGAIN))||(Wym_EAGAIN->c_repcode()!=EAGAIN)) {   WY_THROW( WyRet() ); } if((Wym_ENOMEM!=WyReply(ENOMEM))||(Wym_ENOMEM->c_repcode()!=ENOMEM)) {   WY_THROW( WyRet() ); } if((Wym_EACCES!=WyReply(EACCES))||(Wym_EACCES->c_repcode()!=EACCES)) {   WY_THROW( WyRet() ); } if((Wym_EFAULT!=WyReply(EFAULT))||(Wym_EFAULT->c_repcode()!=EFAULT)) {   WY_THROW( WyRet() ); } if((Wym_ENOTBLK!=WyReply(ENOTBLK))||(Wym_ENOTBLK->c_repcode()!=ENOTBLK)) {   WY_THROW( WyRet() ); } if((Wym_EBUSY!=WyReply(EBUSY))||(Wym_EBUSY->c_repcode()!=EBUSY)) {   WY_THROW( WyRet() ); } if((Wym_EEXIST!=WyReply(EEXIST))||(Wym_EEXIST->c_repcode()!=EEXIST)) {   WY_THROW( WyRet() ); } if((Wym_EXDEV!=WyReply(EXDEV))||(Wym_EXDEV->c_repcode()!=EXDEV)) {   WY_THROW( WyRet() ); } if((Wym_ENODEV!=WyReply(ENODEV))||(Wym_ENODEV->c_repcode()!=ENODEV)) {   WY_THROW( WyRet() ); } if((Wym_ENOTDIR!=WyReply(ENOTDIR))||(Wym_ENOTDIR->c_repcode()!=ENOTDIR)) {   WY_THROW( WyRet() ); } if((Wym_EISDIR!=WyReply(EISDIR))||(Wym_EISDIR->c_repcode()!=EISDIR)) {   WY_THROW( WyRet() ); } if((Wym_EINVAL!=WyReply(EINVAL))||(Wym_EINVAL->c_repcode()!=EINVAL)) {   WY_THROW( WyRet() ); } if((Wym_ENFILE!=WyReply(ENFILE))||(Wym_ENFILE->c_repcode()!=ENFILE)) {   WY_THROW( WyRet() ); } if((Wym_EMFILE!=WyReply(EMFILE))||(Wym_EMFILE->c_repcode()!=EMFILE)) {   WY_THROW( WyRet() ); } if((Wym_ENOTTY!=WyReply(ENOTTY))||(Wym_ENOTTY->c_repcode()!=ENOTTY)) {   WY_THROW( WyRet() ); } if((Wym_ETXTBSY!=WyReply(ETXTBSY))||(Wym_ETXTBSY->c_repcode()!=ETXTBSY)) {   WY_THROW( WyRet() ); } if((Wym_EFBIG!=WyReply(EFBIG))||(Wym_EFBIG->c_repcode()!=EFBIG)) {   WY_THROW( WyRet() ); } if((Wym_ENOSPC!=WyReply(ENOSPC))||(Wym_ENOSPC->c_repcode()!=ENOSPC)) {   WY_THROW( WyRet() ); } if((Wym_ESPIPE!=WyReply(ESPIPE))||(Wym_ESPIPE->c_repcode()!=ESPIPE)) {   WY_THROW( WyRet() ); } if((Wym_EROFS!=WyReply(EROFS))||(Wym_EROFS->c_repcode()!=EROFS)) {   WY_THROW( WyRet() ); } if((Wym_EMLINK!=WyReply(EMLINK))||(Wym_EMLINK->c_repcode()!=EMLINK)) {   WY_THROW( WyRet() ); } if((Wym_EPIPE!=WyReply(EPIPE))||(Wym_EPIPE->c_repcode()!=EPIPE)) {   WY_THROW( WyRet() ); } if((Wym_EDOM!=WyReply(EDOM))||(Wym_EDOM->c_repcode()!=EDOM)) {   WY_THROW( WyRet() ); } if((Wym_ERANGE!=WyReply(ERANGE))||(Wym_ERANGE->c_repcode()!=ERANGE)) {   WY_THROW( WyRet() ); } if((Wym_EDEADLK!=WyReply(EDEADLK))||(Wym_EDEADLK->c_repcode()!=EDEADLK)) {   WY_THROW( WyRet() ); } if((Wym_ENAMETOOLONG!=WyReply(ENAMETOOLONG))||(Wym_ENAMETOOLONG->c_repcode()!=ENAMETOOLONG)) {   WY_THROW( WyRet() ); } if((Wym_ENOLCK!=WyReply(ENOLCK))||(Wym_ENOLCK->c_repcode()!=ENOLCK)) {   WY_THROW( WyRet() ); } if((Wym_ENOSYS!=WyReply(ENOSYS))||(Wym_ENOSYS->c_repcode()!=ENOSYS)) {

⌨️ 快捷键说明

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