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

📄 ck_uty.cpp

📁 一个不错
💻 CPP
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2005   Test functions in wy_uty.h*/#include "wyret.h"#include "wyregfile.h"#include "wyfifofile.h"#include "wy_uty.h"#include <math.h>    // for fabs#include <cstdio>    // for sscanfstatic void t1(void){ WyFifoFile ff_rd,ff_wr; WyRet r; if((WyFifoFile::mkpipe(ff_rd,ff_wr))!=Ok) {   WY_THROW(r); } // basic built-in type (write) {   char ch;   WyStr str;   ff_wr << char('a');   ff_rd >> ch;   if(ch!='a') {     WY_THROW( WyRet() );   }   ff_wr << (signed char)-123;   ff_rd >> str;   if(str!="-123") {     WY_THROW( WyRet() );   }   ff_wr << (signed short)-122;   ff_rd >> str;   if(str!="-122") {     WY_THROW( WyRet() );   }   ff_wr << (signed int)-121;   ff_rd >> str;   if(str!="-121") {     WY_THROW( WyRet() );   }   ff_wr << (signed long)-120;   ff_rd >> str;   if(str!="-120") {     WY_THROW( WyRet() );   }   ff_wr << (signed long long)-119;   ff_rd >> str;   if(str!="-119") {     WY_THROW( WyRet() );   }   ff_wr << (unsigned char)123;   ff_rd >> str;   if(str!="123") {     WY_THROW( WyRet() );   }   ff_wr << (unsigned short)122;   ff_rd >> str;   if(str!="122") {     WY_THROW( WyRet() );   }   ff_wr << (unsigned int)121;   ff_rd >> str;   if(str!="121") {     WY_THROW( WyRet() );   }   ff_wr << (unsigned long)120;   ff_rd >> str;   if(str!="120") {     WY_THROW( WyRet() );   }   ff_wr << (unsigned long long)119;   ff_rd >> str;   if(str!="119") {     WY_THROW( WyRet() );   }   ff_wr << (float)4.5;   ff_rd >> str;   if(str!="4.500000") {     WY_THROW( WyRet() );   }   ff_wr << (double)3.5;   ff_rd >> str;   if(str!="3.500000") {     WY_THROW( WyRet() );   }   //    ff_wr << "23456";   ff_rd >> ch;   if(ch!='2') {     WY_THROW( WyRet() );   }   ff_rd >> ch;   if(ch!='3') {     WY_THROW( WyRet() );   }   ff_rd >> ch;   if(ch!='4') {     WY_THROW( WyRet() );   }   unsigned char uch;   ff_rd >> uch;   if(uch!='5') {     WY_THROW( WyRet() );   }   signed char sch;   ff_rd >> sch;   if(sch!='6') {     WY_THROW( WyRet() );   } } // basic built-in type (wrd) {   char ch;   WyStr str;   ff_wr << Wy::wrd((char)8);   ff_rd >> ch;   if(ch!='8') {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((signed char)'a');   ff_rd >> str;   if(str!="97") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((unsigned char)'a');   ff_rd >> str;   if(str!="97") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((signed char)-123);   ff_rd >> str;   if(str!="-123") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((signed short)-122);   ff_rd >> str;   if(str!="-122") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((signed int)-121);   ff_rd >> str;   if(str!="-121") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((signed long)-120);   ff_rd >> str;   if(str!="-120") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((signed long long)-119);   ff_rd >> str;   if(str!="-119") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((unsigned char)123);   ff_rd >> str;   if(str!="123") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((unsigned short)122);   ff_rd >> str;   if(str!="122") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((unsigned int)121);   ff_rd >> str;   if(str!="121") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((unsigned long)120);   ff_rd >> str;   if(str!="120") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((unsigned long long)119);   ff_rd >> str;   if(str!="119") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((float)4.5);   ff_rd >> str;   if(str!="4.500000") {     WY_THROW( WyRet() );   }   ff_wr << Wy::wrd((double)3.5);   ff_rd >> str;   if(str!="3.500000") {     WY_THROW( WyRet() );   }   //    ff_wr << Wy::wrd((long)234);   ff_rd >> ch;   if(ch!='2') {     WY_THROW( WyRet() );   }   ff_rd >> ch;   if(ch!='3') {     WY_THROW( WyRet() );   }   ff_rd >> ch;   if(ch!='4') {     WY_THROW( WyRet() );   }   // chk << const void*   {     const int stmp[]={0,5,0};     WyStr tstr(WyCSeg("0x",2));     if((r=Wy::_catstr(tstr,(unsigned int)stmp,int(16)))!=Ok) {       WY_THROW(r);     }     ff_wr << stmp;     ff_rd >> str;     if(str!=tstr) {       WY_THROW( WyRet() );     }   } } // chk >> str {   WyRegFile tmp(__FILE__,O_RDONLY);  // this file   WyStr str;   size_t o_cap( str._capacity() );   const char* o_buf( str.data() );   if(str.size()!=0) {     WY_THROW( WyRet() );   }   tmp >> str;   if(   (str.size()!=o_cap)      // not read cap characters       &&(str._capacity()!=o_cap) // capacity changed       &&(str.data()!=o_buf)) {   // reallocation occurred     WY_THROW( WyRet() );   }   if(Wy::_strcmp(str.cseg(0,12),WyCSeg("/* Copyright"))!=0) {     WY_THROW( WyRet() );   }      for(;;) {     tmp >> str;     if(str.size()==0) {       break;     }   } } // full_read/writr_all(WyByteFlow&,const void*,size_t,size_t&) {   const char tdata[]="1234244";   char rbuf[sizeof(tdata)];   size_t n_rw;   if((r=Wy::full_write(ff_wr,tdata,sizeof(tdata),n_rw))!=Ok) {     WY_THROW(r);   }   if(n_rw!=sizeof(tdata)) {     WY_THROW( WyRet() );   }   n_rw=999;   if((r=Wy::full_read(ff_rd,rbuf,sizeof(rbuf),n_rw))!=Ok) {     WY_THROW(r);   }   if(n_rw!=sizeof(rbuf)) {     WY_THROW( WyRet() );   }   WyByteFlow tmpbf;   if((r=Wy::full_write(tmpbf,tdata,sizeof(tdata),n_rw))!=Wym_EBADF) {     WY_THROW(r);   }   if(n_rw!=0) {     WY_THROW( WyRet() );   }   n_rw=99;   if((r=Wy::full_read(tmpbf,rbuf,sizeof(rbuf),n_rw))!=Wym_EBADF) {     WY_THROW(r);   }   if(n_rw!=0) {     WY_THROW( WyRet() );   } } // full_read(..,WyStr&,size_t) /full_write(..,const WyStr&, size_t&) {   const WyStr tstr("1234244abdftlk");   WyStr rbuf;   size_t n_rw;   if((r=Wy::full_write(ff_wr,tstr,n_rw))!=Ok) {     WY_THROW(r);   }   if(n_rw!=tstr.size()) {     WY_THROW( WyRet() );   }   if((r=Wy::full_read(ff_rd,rbuf,tstr.size()))!=Ok) {     WY_THROW(r);   }   if(rbuf!=tstr) {     WY_THROW( WyRet() );   }   if((r=Wy::full_write(ff_wr,tstr.cseg(),n_rw))!=Ok) {     WY_THROW(r);   }   if(n_rw!=tstr.size()) {     WY_THROW( WyRet() );   }   rbuf.reset();   if((r=Wy::full_read(ff_rd,rbuf,tstr.size()))!=Ok) {     WY_THROW(r);   }   if(rbuf!=tstr) {     WY_THROW( WyRet() );   }   WyByteFlow tmpbf;   if((r=Wy::full_write(tmpbf,tstr,n_rw))!=Wym_EBADF) {     WY_THROW(r);   }   if(n_rw!=0) {     WY_THROW( WyRet() );   }   if((r=Wy::full_read(tmpbf,rbuf,20))!=Wym_EBADF) {     WY_THROW(r);   }   WyRegFile this_file(__FILE__,O_RDONLY);   if((r=Wy::full_read(this_file,rbuf,16L*1024))!=Ok) {     WY_THROW(r);   }   WyFileStat stt;   if((r=this_file.stat(stt))!=Ok) {     WY_THROW(r);   }   if((size_t)stt.sf_size()!=rbuf.size()) {     WY_THROW( WyRet() );   }   WyStr rbuf2;   this_file.set_pos(0);   rbuf2._reserve(rbuf.size());   n_rw=0;   if((r=Wy::full_read(this_file,&rbuf2[0],rbuf2._capacity(),n_rw))!=Ok) {     WY_THROW(r);   }   if(n_rw!=rbuf.size()) {     WY_THROW( WyRet() );   }   rbuf2._setsize(n_rw);   if(rbuf!=rbuf2) {     WY_THROW( WyRet() );   } }};static void t_error(void){  // chk <<(bf,WyStr)  {    try {      WyRegFile tmp;      tmp << WyStr("kk");      WY_THROW( WyRet() );    }    catch(const WyByteFlow::Reply& e) {      if(e!=Wym_EBADF) {        WY_THROW( WyRet(e) );      }      // FALLTHROUGH    };  }  // chk <<(bf,WyCSeg)  {    try {      WyRegFile tmp;      tmp << WyCSeg("kk");      WY_THROW( WyRet() );    }    catch(const WyByteFlow::Reply& e) {      if(e!=Wym_EBADF) {        WY_THROW( WyRet(e) );      }      // FALLTHROUGH    };  }  // chk <<(bf,const char*)  {    try {      WyRegFile tmp;      tmp << (const char*)"kk";      WY_THROW( WyRet() );    }    catch(const WyByteFlow::Reply& e) {      if(e!=Wym_EBADF) {        WY_THROW( WyRet(e) );      }      // FALLTHROUGH    };  }  // chk <<(bf,char*)  {    try {      WyRegFile tmp;      tmp << (char*)"kk";      WY_THROW( WyRet() );    }    catch(const WyByteFlow::Reply& e) {      if(e!=Wym_EBADF) {        WY_THROW( WyRet(e) );      }      // FALLTHROUGH    };  }  // chk <<(bf,char)  {    try {      WyRegFile tmp;      tmp << (char)'a';      WY_THROW( WyRet() );    }    catch(const WyByteFlow::Reply& e) {      if(e!=Wym_EBADF) {        WY_THROW( WyRet(e) );      }      // FALLTHROUGH    };  }  // chk <<(bf,int)  (there are many, juct pickup one)  {    try {      WyRegFile tmp;      tmp << (int)1;      WY_THROW( WyRet() );    }    catch(const WyByteFlow::Reply& e) {      if(e!=Wym_EBADF) {        WY_THROW( WyRet(e) );      }      // FALLTHROUGH    };  }  // chk >>(bf,str)  {    try {      WyRegFile tmp;      WyStr str;      tmp << str;      WY_THROW( WyRet() );    }    catch(const WyByteFlow::Reply& e) {      if(e!=Wym_EBADF) {        WY_THROW( WyRet(e) );      }      // FALLTHROUGH    };  }  // chk >>(bf,char&)  {    try {      WyRegFile tmp;      char ch('a');      tmp << ch;      WY_THROW( WyRet() );    }    catch(const WyByteFlow::Reply& e) {      if(e!=Wym_EBADF) {        WY_THROW( WyRet(e) );      }      // FALLTHROUGH    };  }};static void t_scanum(void){ WyRet r;  // chk _scanum(ValueType&,size_t&,const WyCSeg&)  {    const char Input1[]=" -12.34	 345.67E-1	 78.901e1 555";    const WyCSeg txt=Input1;    size_t fidx=0;    float value_f1,value_f2;    double value_lf;    int   value_d;    // This loop is to use break to exit the block    //    do {      if((r=Wy::_scanum(value_f1,fidx,txt))!=Ok) {        WY_HERE(r);        break;      }      if((r=Wy::_scanum(value_f2,fidx,txt))!=Ok) {        WY_HERE(r);        break;      }      if((r=Wy::_scanum(value_lf,fidx,txt))!=Ok) {        WY_HERE(r);        break;      }      if((r=Wy::_scanum(value_d,fidx,txt))!=Ok) {        WY_HERE(r);        break;      }      r=Ok;    } while(false);     if(r!=Ok) {      WY_THROW(r);    }        float v_f1,v_f2;    double v_lf;    int v_d;    if(std::sscanf(txt.begin(),"%f %f %lf %d",                   &v_f1,&v_f2,&v_lf,&v_d)!=4) {      WY_THROW( WyRet() );    }    if(::fabs(v_f1-value_f1)>0.001) {      WY_THROW( WyRet() );    }    if(::fabs(v_f2-value_f2)>0.001) {      WY_THROW( WyRet() );    }    if(::fabsl(v_lf-value_lf)>0.00001) {      WY_THROW( WyRet() );    }    if(v_d!=value_d) {      WY_THROW( WyRet() );    }  }  // chk _scanum(ValueType&,size_t&,const WyCSeg&,int)  {    const char Input1[]="ffff 	222";    const WyCSeg txt=Input1;    size_t fidx=0;    unsigned int  value_x1, value_x2;    if((r=Wy::_scanum(value_x1,fidx,txt,16))!=Ok) {      WY_THROW(r);    }    if((r=Wy::_scanum(value_x2,fidx,txt,16))!=Ok) {      WY_THROW(r);    }    unsigned int v_x1,v_x2;    if(std::sscanf(txt.begin(),"%x %x",                   &v_x1,&v_x2)!=2) {      WY_THROW( WyRet() );    }    if(value_x1!=v_x1) {      WY_THROW( WyRet() );    }    if(value_x2!=v_x2) {      WY_THROW( WyRet() );    }  }  // chk reply  {    WyCSeg txt;    size_t fidx=100;    if((r=Wy::_scanum(fidx,fidx,txt))!=Wym_ENOENT) {      WY_THROW( WyRet() );    }    if(fidx!=100) {      WY_THROW( WyRet() );    }    txt="9876543210";    fidx=0;    if((r=Wy::_scanum(fidx,fidx,txt))!=Wym_ERANGE) {      WY_THROW( WyRet() );    }    if(fidx!=0) {      WY_THROW( WyRet() );    }    if((r=Wy::_scanum(fidx,fidx,txt,37))!=Wym_EINVAL) {      WY_THROW( WyRet() );    }    if((r=Wy::_scanum(fidx,fidx,txt,1))!=Wym_EINVAL) {      WY_THROW( WyRet() );    }  }};void ck_uty(void){ t1(); t_error(); t_scanum();};

⌨️ 快捷键说明

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