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

📄 chk_cseg.cpp

📁 一个不错
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2003   Build: make chk_cseg*/#include "wyret.h"#include "wycseg.h"#include "wystr.h"#include <iostream>#if WYCSEG_VERSION!=31#error Test code is for WYCSEG_VERSION 31#endifstatic void verify_equ(const WyCSeg& s1,const WyCSeg& s2){ if(s1.begin()==NULL) {   WY_THROW( WyRet() ); } if(s1.end()==NULL) {   WY_THROW( WyRet() ); } if(s1.size()!=s2.size()) {   WY_THROW( WyRet() ); } if(s1!=s2) {   WY_THROW( WyRet() ); } if(s1==s2) { } else {   WY_THROW( WyRet() ); } if(s1.size()!=0) {   if(std::memcmp(s1.begin(),s2.begin(),s1.size())!=0) {     WY_THROW( WyRet() );   } }};#define CHK_EQU(s1,s2) try { verify_equ(s1,s2); } catch(...) { WY_THROW( WyRet()); };static void ck_cseg(void){ WyRet r; {  WyCSeg s0;  if(s0.is_default()==false) {    WY_THROW( WyRet() );  }  if(s0.size()!=0) {    WY_THROW( WyRet() );  }  if(s0.begin()==NULL) {    WY_THROW( WyRet() );  }  if(s0.end()==NULL) {    WY_THROW( WyRet() );  }  if(*s0.begin()!=0) {    WY_THROW( WyRet() );  // feature test  }  const char cstr1[]="123";  WyCSeg s1(cstr1),s2(s1),s3="xyz";  CHK_EQU(s1,s2);  if(s1.size()!=3) {    WY_THROW( WyRet() );  }  if((s1[0]!='1')||(s1[1]!='2')||(s1[2]!='3')) {    WY_THROW( WyRet() );  }  if((s3[0]!='x')||(s3[1]!='y')||(s3[2]!='z')) {    WY_THROW( WyRet() );  }  WyCSeg s4="",s5(s3);  CHK_EQU(s0,s4);  CHK_EQU(s3,s5);  // chk operator==(const WyCSeg&)  if(s0==s4) {  } else {    WY_THROW( WyRet() );  }  if(s0!=s4) {    WY_THROW( WyRet() );  } else {  }  if(s0=="") {  } else {    WY_THROW( WyRet() );  }  if(s0!="") {    WY_THROW( WyRet() );  } else {  }  if(""==s0) {  } else {    WY_THROW( WyRet() );  }  if(""!=s0) {    WY_THROW( WyRet() );  } else {  }  if(s1==s3) {    WY_THROW( WyRet() );  }  if(s1!=s3) {  } else {    WY_THROW( WyRet() );  }  if(s1==s3.begin()) {    WY_THROW( WyRet() );  }  if(s1!=s3.begin()) {  } else {    WY_THROW( WyRet() );  }  if(s1.begin()==s3) {    WY_THROW( WyRet() );  }  if(s1.begin()!=s3) {  } else {    WY_THROW( WyRet() );  }  if(s3==s5) {  } else {    WY_THROW( WyRet() );  }  if(s3!=s5) {    WY_THROW( WyRet() );  }  if(s3==s5.begin()) {  } else {    WY_THROW( WyRet() );  }  if(s3!=s5.begin()) {    WY_THROW( WyRet() );  }  if(s3.begin()==s5) {  } else {    WY_THROW( WyRet() );  }  if(s3.begin()!=s5) {    WY_THROW( WyRet() );  }  s0.reset(cstr1,size_t(0));  s1.reset(cstr1+1,size_t(0));  CHK_EQU(s0,s1); } {  WyCSeg s1("abc",4),s2(s1);  CHK_EQU(s1,s2);  if(s1.size()!=4) {    WY_THROW( WyRet() );  }  if((s1[0]!='a')||(s1[1]!='b')||(s1[2]!='c')||(s1[3]!=0)) {    WY_THROW( WyRet() );  } } // WyCSeg(const char*, const char*)  {  const char* tmp="helo";  WyCSeg s1(tmp,tmp+4);  if(s1.size()!=4) {    WY_THROW( WyRet() );  }  if((s1[0]!='h')||(s1[1]!='e')||(s1[2]!='l')||(s1[3]!='o')) {    WY_THROW( WyRet() );  }  WyCSeg s2("","");  if(s2.size()!=0) {    WY_THROW( WyRet() );  } } // reset()/reset(const WyCSeg&) {  WyCSeg s1("x",1),s2("a");  if(s1.size()!=1) {    WY_THROW( WyRet() );  }  s2.reset(s1);  CHK_EQU(s1,s2);  if(s1.is_default()) {    WY_THROW( WyRet() );  }  s1.reset();  if(s1.is_default()==false) {    WY_THROW( WyRet() );  } } // reset(const char*) {  WyCSeg s1("x");  CHK_EQU(s1,s1);  if((r=s1.reset("123"))!=Ok) {    WY_THROW(r);  }   if((s1[0]!='1')||(s1[1]!='2')||(s1[2]!='3')) {    WY_THROW( WyRet() );  } } // reset(const char*,size_t) {  WyCSeg s1("x");  if((r=s1.reset("ijk",3))!=Ok) {    WY_THROW(r);  }   if(s1.size()!=3) {    WY_THROW( WyRet() );  }   if((s1[0]!='i')||(s1[1]!='j')||(s1[2]!='k')) {    WY_THROW( WyRet() );  } } // reset(const char*, const char*)  {  const char* tmp="helo";  WyCSeg s1(tmp,size_t(0)),s2;  // note: s1("",0) may or may be be default, may depend on compiler   //       optimization level  //  if(s1.is_default()==false) {    WY_THROW( WyRet() );  }  if(s2.is_default()==false) {    WY_THROW( WyRet() );  }    if((r=s1.reset(tmp,tmp+4))!=Ok) {    WY_THROW( WyRet() );  }  if(s1.size()!=4) {    WY_THROW( WyRet() );  }  if((s1[0]!='h')||(s1[1]!='e')||(s1[2]!='l')||(s1[3]!='o')) {    WY_THROW( WyRet() );  }  if((r=s1.reset(tmp,tmp))!=Ok) {    WY_THROW( WyRet() );  }  if(s1.size()!=0) {    WY_THROW( WyRet() );  }  s1.reset();  if(s1.is_default()==false) {    WY_THROW( WyRet() );  } } // chk front()/back() {  WyCSeg s="asdf";  if(s.front()!='a') {    WY_THROW( WyRet() );  }  if(s.back()!='f') {    WY_THROW( WyRet() );  }  s.reset();  try {    s.front();    WY_THROW( WyRet() );  }  catch(const WyCSeg::Reply& e) {    if(e!=Wym_ENOENT) {      WY_THROW( WyRet() );    }  };  try {    s.back();    WY_THROW( WyRet() );  }  catch(const WyCSeg::Reply& e) {    if(e!=Wym_ENOENT) {      WY_THROW( WyRet() );    }  }; } // chk _move_begin() {  const char cstr[]="234";  WyCSeg s(cstr);  s._move_begin(1);  if(s.size()!=2) {    WY_THROW( WyRet() );  }  if(s.front()!='3') {    WY_THROW( WyRet() );  }  if(*s._move_begin(1)!='4') {    WY_THROW( WyRet() );  }  if(s.size()!=1) {    WY_THROW( WyRet() );  }  if(s.front()!='4') {    WY_THROW( WyRet() );  }  s._move_begin(1);  if(s.size()!=0) {    WY_THROW( WyRet() );  }  s._move_begin(-3);  if(s.size()!=3) {    WY_THROW( WyRet() );  }  s._move_begin(s.size());  if(s.size()!=0) {    WY_THROW( WyRet() );  }  s=cstr;  if(s!=cstr) {    WY_THROW( WyRet() );  }  try {    s._move_begin(s.size()+1);    WY_THROW( WyRet() );  }  catch(const WyCSeg::Reply& e) {    if(e!=Wym_EINVAL) {      WY_THROW( WyRet(e) );    }  }; } // chk _move_end() {  const char cstr[]="234";  WyCSeg s(cstr);  s._move_end(-1);  if(s.size()!=2) {    WY_THROW( WyRet() );  }  if(s.back()!='3') {    WY_THROW( WyRet() );  }  if(*s._move_end(-1)!='3') {    WY_THROW( WyRet() );  }  if(s.size()!=1) {    WY_THROW( WyRet() );  }  if(s.back()!='2') {    WY_THROW( WyRet() );  }  s._move_end(-1);  if(s.size()!=0) {    WY_THROW( WyRet() );  }  s._move_end(2);  if(s.size()!=2) {    WY_THROW( WyRet() );  }  s._move_end(-s.size());  if(s.size()!=0) {    WY_THROW( WyRet() );  }  s=cstr;  if(s!=cstr) {    WY_THROW( WyRet() );  }  try {    s._move_end(-1-s.size());    WY_THROW( WyRet() );  }  catch(const WyCSeg::Reply& e) {    if(e!=Wym_EINVAL) {      WY_THROW( WyRet(e) );    }  }; } // swap(..) {  const char *cstr1="ab";  const char *cstr2="fgg";  WyCSeg s1(cstr1);  WyCSeg s2(cstr2);  if(s1.begin()!=cstr1) {    WY_THROW( WyRet() );  }  if(s1.size()!=::strlen(cstr1)) {    WY_THROW( WyRet() );  }  if(s2.begin()!=cstr2) {    WY_THROW( WyRet() );  }  if(s2.size()!=::strlen(cstr2)) {    WY_THROW( WyRet() );  }  s1.swap(s2);  if(s1.begin()!=cstr2) {    WY_THROW( WyRet() );  }  if(s1.size()!=::strlen(cstr2)) {    WY_THROW( WyRet() );  }  if(s2.begin()!=cstr1) {    WY_THROW( WyRet() );  }  if(s2.size()!=::strlen(cstr1)) {    WY_THROW( WyRet() );  } } // reset(const char*) {  WyCSeg s1("x");  if((r=s1.reset("B"))!=Ok) {    WY_THROW(r);  }  if(s1.size()!=1) {    WY_THROW( WyRet() );  }  if(s1[0]!='B') {    WY_THROW( WyRet() );  } } // reset(const WyCSeg&) {  WyCSeg s1("x"),s2("aa");  s1.reset(s2);  CHK_EQU(s1,s2);  if(s1.size()!=2) {    WY_THROW( WyRet() );  } } // operator=(const WyCSeg&) {  WyCSeg s1("x"),s2("aa");  if(s1.size()!=1) {    WY_THROW( WyRet() );  }  if(&(s1=s2)!=&s1) {    WY_THROW( WyRet() );  }  CHK_EQU(s1,s2); } // operator=(const char*) {  WyCSeg s1("xx");  const char abc[]="abc";  if(s1.size()!=2) {    WY_THROW( WyRet() );  }  if(&(s1=abc)!=&s1) {    WY_THROW( WyRet() );  }  if(s1.size()!=3) {    WY_THROW( WyRet() );  }  if(s1!=abc) {    WY_THROW( WyRet() );  }    try {    s1=NULL;    WY_THROW( WyRet() );  }  catch(const WyCSeg::Reply& e) {    if(e!=Wym_EFAULT) {      WY_THROW( WyRet() );    }  }; } // chk operator [](size_t) {  WyCSeg s="1234567";  if((s[0]!='1')||(s[1]!='2')) {    WY_THROW( WyRet() );  }    try {    s[s.size()];    WY_THROW( WyRet() );  }  catch(const WyCSeg::Reply& e) {    if(e!=Wym_EINVAL) {      WY_THROW( WyRet() );    }  }; } // chk cseg(size_t,size_t) {  WyCSeg s="1234567";  if(Wy::_strcmp(s.cseg(0,3),"123")!=0) {    WY_THROW( WyRet() );  }  if(Wy::_strcmp(s.cseg(0,3),"12")<0) {    WY_THROW( WyRet() );  }  if(Wy::_strcmp(s.cseg(0,3),"1234")>0) {    WY_THROW( WyRet() );  }  if(Wy::_strcmp(s.cseg(1,2),"23")!=0) {    WY_THROW( WyRet() );  }  if(Wy::_strcmp(s.cseg(5,6),"67")!=0) {    WY_THROW( WyRet() );  }  if(s.cseg(7,6).size()!=0) {    WY_THROW( WyRet() );  }  if(Wy::_strcmp(s.cseg(5),"67")!=0) {    WY_THROW( WyRet() );  }  if(s.cseg(s.size()).size()!=0) {    WY_THROW( WyRet() );  }  if(Wy::_strcmp(s.cseg(s.size()),"")!=0) {    WY_THROW( WyRet() );  } } // is_overlap(const WyCSeg&) {  WyCSeg s1("x"),s2("aa");  if(s1.is_overlap(s2)) {    WY_THROW( WyRet() );  } } // end() {  WyCSeg s1("3456",3);  if(s1.size()!=3) {    WY_THROW( WyRet() );  }  if(s1.end()!=s1.begin()+s1.size()) {     WY_THROW( WyRet() );  } } // chk average coding for const char* {  WyCSeg c1="abtt";  WyCSeg c2("hdlm");  if(c1.begin()==c2.begin()) {  // for supressing unused warning    WY_THROW( WyRet() );  } } // chk move ctor {  char buf[2*sizeof(WyCSeg)];  ::memset(buf,0,sizeof(buf));  WyCSeg *p=reinterpret_cast<WyCSeg*>(buf);  new(p) WyCSeg("bn",2);  new(p+1) WyCSeg(*p,Wy::ByMove);  if(Wy::_strcmp(*(p+1),WyCSeg("bn",2))!=0) {    (p+1)->~WyCSeg();    WY_THROW( WyRet() );  }  (p+1)->~WyCSeg(); }};static void ck_cseg_find(void){ // find(size_t*,size_t,const WyCSeg&) {  const WyCSeg ss("\xffx1111231237890\xff");  size_t fidx;  fidx=100;  if(ss.find(&fidx,2,WyCSeg())==true) {    WY_THROW( WyRet() );  }  if(fidx!=100) {    WY_THROW( WyRet() );  }  if(ss.find(NULL,2,WyCSeg())==true) {    WY_THROW( WyRet() );  }  if(ss.find(&fidx,2,WyCSeg("123"))==false) {    WY_THROW( WyRet() );  }  if(fidx!=5) {    WY_THROW( WyRet() );  }  if(ss.find(NULL,2,WyCSeg("123"))==false) {    WY_THROW( WyRet() );  }  if(ss.find(&fidx,0,WyCSeg("0\xff"))==false) {    WY_THROW( WyRet() );  }  if(fidx!=14) {    WY_THROW( WyRet() );  }  if(ss.find(NULL,0,WyCSeg("0\xff"))==false) {    WY_THROW( WyRet() );  }  fidx=100;  if(ss.find(&fidx,100,WyCSeg("\xff"))==true) {    WY_THROW( WyRet() );  }  if(fidx!=100) {    WY_THROW( WyRet() );  }  if(ss.find(&fidx,0,ss)==false) {    WY_THROW( WyRet() );  }  if(fidx!=0) {    WY_THROW( WyRet() );  }  if(ss.find(&fidx,0,ss.cseg(1))==false) {    WY_THROW( WyRet() );  }  if(fidx!=1) {    WY_THROW( WyRet() );  }  const WyCSeg ss2;  fidx=100;  if(ss2.find(&fidx,0,WyCSeg())==true) {    WY_THROW( WyRet() );  }  if(fidx!=100) {    WY_THROW( WyRet() );  } } // rfind(size_t*,size_t,const WyCSeg&) {  const WyCSeg ss("\xffx1111231237890\xff");  size_t fidx;  fidx=100;  if(ss.rfind(&fidx,2,WyCSeg())==true) {    WY_THROW( WyRet() );  }  if(fidx!=100) {    WY_THROW( WyRet() );  }  if(ss.rfind(NULL,200,WyCSeg())==true) {

⌨️ 快捷键说明

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