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

📄 chk_hstr.cpp

📁 一个不错
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2004   Build: chk_hstr*/#include "wy__hstr.h"#include <iostream>#if WY__HSTR_VERSION!=31#error Test code is for WY__HSTR_VERSION 31#endifvoid chk_invariant(const Wy__HStr* str){ if(str->data()==0) {   WY_THROW( WyRet() ); } if(str->c_str()!=str->data()) {   WY_THROW( WyRet() ); } if(str->data()[ str->size() ]!=0) {   WY_THROW( WyRet() ); }};bool chk_default(const Wy__HStr* ptr){ chk_invariant(ptr); if(ptr->size()!=0) {   return(false); } if(ptr->c_str()[0]!=0) {   return(false); } if(ptr->_capacity()!=Wy__HStr::min_capacity()) {   return(false); } return(true);};#define CHK_DEFAULT(expr) if(chk_default(expr)==false) { WY_THROW(WyRet() ); };#define CHK_NOT_DEFAULT(expr) if(chk_not_default(expr)==false) { WY_THROW(WyRet() ); };static void ck_str(void){ const char Ref[]="0123456789ab"; Wy__HStr* tp0= Wy__HStr::alloc(); Wy__HStr* tp1= Wy__HStr::alloc(100); Wy__HStr* tp2= Wy__HStr::alloc(WyCSeg(Ref,3)); Wy__HStr* tp3= Wy__HStr::alloc(WyCSeg(Ref+1,3)); Wy__HStr* tp4= Wy__HStr::alloc(WyCSeg(Ref+2,3),WyCSeg(Ref+5,3)); Wy__HStr* tp5= Wy__HStr::alloc(WyCSeg(Ref+3,3),WyCSeg(Ref+6,3),WyCSeg(Ref+9,3)); Wy__HStr* tmp= Wy__HStr::alloc(); WyRet r; chk_invariant(tp0); chk_invariant(tp1); chk_invariant(tp2); chk_invariant(tp3); chk_invariant(tp4); chk_invariant(tp5); chk_invariant(tmp); try {   // chk alloc tp*   CHK_DEFAULT(tp0);   if(tp1->c_str()!=tp1->data()) {     WY_THROW( WyRet() );   }   if((tp1->c_str()[0]!=0)||(tp1->size()!=0)) {     WY_THROW( WyRet() );   }   if(tp1->_capacity()<100) {     WY_THROW( WyRet() );   }   if(::memcmp(Ref,tp2->c_str(),tp2->size())!=0) {     WY_THROW( WyRet() );   }   if(::memcmp(Ref+1,tp3->c_str(),tp3->size())!=0) {     WY_THROW( WyRet() );   }   if(::memcmp(Ref+2,tp4->c_str(),tp4->size())!=0) {     WY_THROW( WyRet() );   }   if(::memcmp(Ref+3,tp5->c_str(),tp5->size())!=0) {     WY_THROW( WyRet() );   }   if(tp2->c_str()[tp2->size()]!=0) {     WY_THROW( WyRet() );   }   if(tp3->c_str()[tp3->size()]!=0) {     WY_THROW( WyRet() );   }   if(tp4->c_str()[tp4->size()]!=0) {     WY_THROW( WyRet() );   }   if(tp5->c_str()[tp5->size()]!=0) {     WY_THROW( WyRet() );   }    // alloc(size_t,char)   {     Wy__HStr* tt= Wy__HStr::alloc(4,'u');     chk_invariant(tt);     if((tt->size()!=4)||(Wy::_strcmp(tt->c_str(),"uuuu")!=0)||(tt->_capacity()<4)) {       Wy__HStr::free(tt);       WY_THROW( WyRet() );     }     Wy__HStr::free(tt);   }   // alloc(const Wy__HStr&)   {     Wy__HStr* tt= Wy__HStr::alloc(*tp2);     chk_invariant(tt);     if(Wy::_strcmp(tt->cseg(),tp2->cseg())!=0) {       Wy__HStr::free(tt);       WY_THROW( WyRet() );     }     Wy__HStr::free(tt);   }   // alloc(const WCSeg&,char)   {     Wy__HStr* tt= Wy__HStr::alloc(WyCSeg("abc",3),'z');     chk_invariant(tt);     if(Wy::_strcmp(tt->cseg(),"abcz")!=0) {       Wy__HStr::free(tt);       WY_THROW( WyRet() );     }     Wy__HStr::free(tt);   }   // alloc(char,const WCSeg&)   {     Wy__HStr* tt= Wy__HStr::alloc('z',WyCSeg("abc",3));     chk_invariant(tt);     if(Wy::_strcmp(tt->cseg(),"zabc")!=0) {       Wy__HStr::free(tt);       WY_THROW( WyRet() );     }     Wy__HStr::free(tt);   }   // alloc(const WCSeg&,size_t,char)   {     Wy__HStr* tt= Wy__HStr::alloc(WyCSeg("abc",3),2,'z');     chk_invariant(tt);     if(Wy::_strcmp(tt->cseg(),"abczz")!=0) {       Wy__HStr::free(tt);       WY_THROW( WyRet() );     }     Wy__HStr::free(tt);   }   // alloc(const WCSeg&,size_t,char,const WyCSeg&)   {     Wy__HStr* tt= Wy__HStr::alloc(WyCSeg("aa"),2,'b',WyCSeg("cc"));     chk_invariant(tt);     if(Wy::_strcmp(tt->cseg(),"aabbcc")!=0) {       Wy__HStr::free(tt);       WY_THROW( WyRet() );     }     Wy__HStr::free(tt);   }   // cseg   if(Wy::_strcmp(tp2->cseg(),WyCSeg(Ref,3))!=0) {     WY_THROW( WyRet() );   }   if(Wy::_strcmp(tp2->cseg(1),WyCSeg(Ref+1,2))!=0) {     WY_THROW( WyRet() );   }   if(Wy::_strcmp(tp2->cseg(1,2),WyCSeg(Ref+1,2))!=0) {     WY_THROW( WyRet() );   }   if(Wy::_strcmp(tp2->cseg(1,3),WyCSeg(Ref+1,2))!=0) {     WY_THROW( WyRet() );   }   chk_invariant(tp2);     // operator[]   if((tp3->_at(0)!='1')||(tp3->_at(1)!='2')) {     WY_THROW( WyRet() );   }   chk_invariant(tp3);   // set_string()   {     chk_invariant(tp0);     tp0->set_string();     CHK_DEFAULT(tp0);     tmp->set_string();     CHK_DEFAULT(tmp);     if((r=tmp->set_string(*tp3))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),tp3->cseg())!=0) {       WY_THROW( WyRet() );     }     if(tmp->c_str()[tmp->size()]!=0) {       WY_THROW( WyRet() );     }     tmp->set_string();     CHK_DEFAULT(tmp);     if((r=tmp->set_string(tp3->cseg()))!=Ok) {       WY_THROW(r);     }     if(Wy::_strcmp(tmp->cseg(),tp3->cseg())!=0) {       WY_THROW( WyRet() );     }     if(tmp->c_str()[tmp->size()]!=0) {       WY_THROW( WyRet() );     }     tmp->set_string();     CHK_DEFAULT(tmp);     if((r=tmp->set_string(0,'x'))!=Ok) {       WY_THROW(r);     }     if(Wy::_strcmp(tmp->cseg(),"")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->set_string(2,'x'))!=Ok) {       WY_THROW(r);     }     if(Wy::_strcmp(tmp->cseg(),"xx")!=0) {       WY_THROW( WyRet() );     }     if(tmp->c_str()[tmp->size()]!=0) {       WY_THROW( WyRet() );     }   }   // append   {     tmp->set_string();     CHK_DEFAULT(tmp);     if((r=tmp->append(*tp2))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"012")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->append(tp2->cseg(1)))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"01212")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->append(0,'a'))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"01212")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->append(1,'a'))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"01212a")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->append('b'))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"01212ab")!=0) {       WY_THROW( WyRet() );     }   }   // find    {     size_t fidx;     tmp->set_string("HELOWOELD");     chk_invariant(tmp);     if(tmp->find(0,'X')==true) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(tmp->find(&fidx,'L')==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=2) {       WY_THROW( WyRet() );     }     if(tmp->rfind(0,'X')==true) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(tmp->rfind(&fidx,'L')==false) {       WY_THROW( WyRet() );     }     if(fidx!=7) {       WY_THROW( WyRet() );     }     if(tmp->find(&fidx,1,'L')==false) {       WY_THROW( WyRet() );     }     if(fidx!=2) {       WY_THROW( WyRet() );     }     if(tmp->find(&fidx,3,'L')==false) {       WY_THROW( WyRet() );     }     if(fidx!=7) {       WY_THROW( WyRet() );     }     if(tmp->find(&fidx,3,'x')==true) {       WY_THROW( WyRet() );     }     if(fidx!=7) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(tmp->rfind(&fidx,3,'L')==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=2) {       WY_THROW( WyRet() );     }     if(tmp->rfind(&fidx,8,'L')==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=7) {       WY_THROW( WyRet() );     }     if(tmp->rfind(&fidx,8,'x')==true) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=7) {       WY_THROW( WyRet() );     }     if(tmp->find(&fidx,0,WyCSeg("EL"))==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=1) {       WY_THROW( WyRet() );     }     /*fidx=100;     if(tmp->find(&fidx,WyCSeg("EL"))==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=1) {       WY_THROW( WyRet() );     }*/     if(tmp->find(&fidx,2,WyCSeg("EL"))==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=6) {       WY_THROW( WyRet() );     }     fidx=100;     if(tmp->rfind(&fidx,10,WyCSeg("EL"))==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=6) {       WY_THROW( WyRet() );     }     if(tmp->rfind(&fidx,tmp->size()-1,WyCSeg("EL"))==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=6) {       WY_THROW( WyRet() );     }     if(tmp->rfind(&fidx,5,WyCSeg("EL"))==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=1) {       WY_THROW( WyRet() );     }     fidx=100;     if(tmp->rfind(&fidx,3,WyCSeg("EL"))==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=1) {       WY_THROW( WyRet() );     }     fidx=100;     if(tmp->rfind(&fidx,1,WyCSeg("EL"))==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=1) {       WY_THROW( WyRet() );     }     if(tmp->rfind(&fidx,0,WyCSeg("EL"))==true) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=1) {       WY_THROW( WyRet() );     }     if(tmp->rfind(&fidx,WyCSeg("EL"))==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=6) {       WY_THROW( WyRet() );     }   }   // _find_not   {     size_t fidx=100;     tmp->set_string("xxxOkbbb");     chk_invariant(tmp);     if(tmp->_find_not(&fidx,0,'x')==false) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);     if(fidx!=3) {       WY_THROW( WyRet() );     }     if(tmp->_find_not(&fidx,5,'b')==true) {       WY_THROW( WyRet() );     }     if(fidx!=3) {       WY_THROW( WyRet() );     }     if(tmp->_rfind_not(&fidx,tmp->size(),'b')==false) {       WY_THROW( WyRet() );     }     if(fidx!=4) {       WY_THROW( WyRet() );     }     if(tmp->_rfind_not(&fidx,2,'x')==true) {       WY_THROW( WyRet() );     }     if(fidx!=4) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);   }   // insert   {     chk_invariant(tmp);     tmp->set_string();     chk_invariant(tmp);     if((r=tmp->insert(0,WyCSeg("fg")))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"fg")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->insert(1,WyCSeg("xz")))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"fxzg")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->insert(tmp->size(),WyCSeg("5")))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"fxzg5")!=0) {       WY_THROW( WyRet() );     }     tmp->set_string();     if((r=tmp->insert(0,2,'a'))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"aa")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->insert(1,3,'b'))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"abbba")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->insert(tmp->size(),1,'c'))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"abbbac")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->insert(1,*tp3))!=Ok) {       WY_THROW(r);     }     if(Wy::_strcmp(tmp->cseg(),"a123bbbac")!=0) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);   }   // erase   {     tmp->set_string();     chk_invariant(tmp);     if((r=tmp->erase(0))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"")!=0) {       WY_THROW( WyRet() );     }     tmp->set_string("987654321");     if((r=tmp->erase(4))!=Ok) {       WY_THROW(r);     }     if(Wy::_strcmp(tmp->cseg(),"9876")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->erase(2,1))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"986")!=0) {       WY_THROW( WyRet() );     }     if((r=tmp->erase(2,10))!=Ok) {       WY_THROW(r);     }     chk_invariant(tmp);     if(Wy::_strcmp(tmp->cseg(),"98")!=0) {       WY_THROW( WyRet() );     }     chk_invariant(tmp);

⌨️ 快捷键说明

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