📄 chk_array.cpp
字号:
} tmp.reset(); CHK_DEFAULT(tmp); tmp.push_back( EleType() ); tmp.push_back( EleType(1) ); tmp.push_back( tmp.back() ); if(tmp.size()!=3) { WY_THROW( WyRet() ); } if(tmp[0]!=DefaultElem) { WY_THROW( WyRet() ); } if(tmp[1]!=EleType(1)) { WY_THROW( WyRet() ); } if(tmp[2]!=EleType(1)) { WY_THROW( WyRet() ); } } // chk pop_back { Wy_Array<EleType> tmp; CHK_DEFAULT(tmp); tmp.pop_back(); CHK_DEFAULT(tmp); size_t cap( (tmp._capacity()<<1)+1 ); for(size_t i=0; i<cap; ++i) { tmp.push_back( EleType() ); } if(tmp.size()!=cap) { WY_THROW( WyRet() ); } while(tmp.size()) { tmp.pop_back(); }; if(tmp.is_default()==false) { WY_THROW( WyRet() ); } } // chk erase(size_t,size_t) { Wy_Array<EleType> tmp; CHK_DEFAULT(tmp); tmp.erase(0,1); CHK_DEFAULT(tmp); size_t cap( (tmp._capacity()<<1)+1 ); for(size_t i=0; i<cap; ++i) { tmp.push_back( EleType() ); } if(tmp.size()!=cap) { WY_THROW( WyRet() ); } size_t rsize=tmp.size(); tmp.erase(tmp.size(),100); if(tmp.size()!=rsize) { WY_THROW( WyRet() ); } tmp.erase(tmp.size()-1,0); if(tmp.size()!=rsize) { WY_THROW( WyRet() ); } tmp.erase(0,tmp.size()); if(tmp.size()!=0) { WY_THROW( WyRet() ); } rsize=tmp.size(); try { tmp.erase(tmp.size()+1,1); WY_THROW( WyRet() ); } catch(const typename Wy_Array<EleType>::Reply& e) { if(e!=Wym_EINVAL) { WY_THROW( WyRet() ); } }; if(tmp.size()!=rsize) { WY_THROW( WyRet() ); } } // chk erase(size_t, BigNum) { Wy_Array<EleType> tmp; CHK_DEFAULT(tmp); tmp.resize(4); if(tmp.size()!=4) { WY_THROW( WyRet() ); } Wy_Array<EleType> tmp_cpy(tmp); if(tmp!=tmp_cpy) { WY_THROW( WyRet() ); } try { tmp.erase(tmp.size()+1,999); WY_THROW( WyRet() ); } catch(const typename Wy_Array<EleType>::Reply& e) { if(tmp!=tmp_cpy) { WY_THROW( WyRet() ); } if(e!=Wym_EINVAL) { WY_THROW( WyRet(e) ); } } catch(...) { WY_THROW( WyRet() ); }; tmp.erase(tmp.size(),999); if(tmp!=tmp_cpy) { WY_THROW( WyRet() ); } tmp.erase(tmp_cpy.size()-1,999); if(tmp.size()!=tmp_cpy.size()-1) { WY_THROW( WyRet() ); } tmp.erase(0,999); if(tmp.size()!=0) { WY_THROW( WyRet() ); } } // chk insert(size_t,const T&) { Wy_Array<EleType> tmp; CHK_DEFAULT(tmp); tmp.insert(0,DefaultElem); if(tmp.size()!=1) { WY_THROW( WyRet() ); } tmp.insert(0,DefaultElem); if(tmp.size()!=2) { WY_THROW( WyRet() ); } tmp.insert(0,DefaultElem); if(tmp.size()!=3) { WY_THROW( WyRet() ); } tmp.insert(1,DefaultElem); if(tmp.size()!=4) { WY_THROW( WyRet() ); } tmp.insert(tmp.size()-1,EleType(5)); // xxx5x if(tmp.size()!=5) { WY_THROW( WyRet() ); } tmp.insert(tmp.size(),EleType(6)); // xxx5x6 if(tmp.size()!=6) { WY_THROW( WyRet() ); } tmp.insert(tmp.size()-2,tmp.back()); // xxx56x6 if(tmp.size()!=7) { WY_THROW( WyRet() ); } if(tmp[3]!=EleType(5)) { WY_THROW( WyRet() ); } if(tmp[4]!=EleType(6)) { WY_THROW( WyRet() ); } if(tmp[5]!=DefaultElem) { WY_THROW( WyRet() ); } if(tmp[6]!=EleType(6)) { WY_THROW( WyRet() ); } try { tmp.insert(tmp.size()+1,EleType()); WY_THROW( WyRet() ); } catch(const typename Wy_Array<EleType>::Reply& e) { if(e!=Wym_EINVAL) { WY_THROW( WyRet() ); } }; if(tmp.size()!=7) { WY_THROW( WyRet() ); } } // chk insert(size_t,size_t,const Element&) { Wy_Array<Element> tmp; CHK_DEFAULT(tmp); tmp.insert(0,0,Element()); CHK_DEFAULT(tmp); tmp.insert(0,1,Element(34)); if(tmp.size()!=1) { WY_THROW( WyRet() ); } if(tmp[0]!=Element(34)) { WY_THROW( WyRet() ); } tmp.insert(0,2,Element(88)); if(tmp.size()!=3) { WY_THROW( WyRet() ); } if((tmp[0]!=88)||(tmp[1]!=88)||(tmp[2]!=Element(34))) { WY_THROW( WyRet() ); } tmp.insert(1,2,Element(77)); if(tmp.size()!=5) { WY_THROW( WyRet() ); } if((tmp[0]!=88)||(tmp[1]!=77)||(tmp[2]!=77) ||(tmp[3]!=88)||(tmp[4]!=Element(34))) { WY_THROW( WyRet() ); } try { tmp.insert(tmp.size()+1,0,Element()); WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(e!=Wym_EINVAL) { WY_THROW( WyRet(e) ); } }; try { tmp.insert(tmp.size(),tmp.max_capacity()+1,Element()); WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(e!=Wym_EFBIG) { WY_THROW( WyRet(e) ); } }; } // chk insert(size_t,const WySeg<Element>&) { Element arr[]={6,89}; WySeg<Element> segarr(arr,sizeof(arr)/sizeof(Element)); Wy_Array<Element> tmp; CHK_DEFAULT(tmp); tmp.insert(0,segarr); if(tmp.size()!=sizeof(arr)/sizeof(Element)) { WY_THROW( WyRet() ); } if((tmp[0].value()!=6)||(tmp[1].value()!=89)) { WY_THROW( WyRet() ); } tmp.insert(1,segarr); if(tmp.size()!=2*sizeof(arr)/sizeof(Element)) { WY_THROW( WyRet() ); } if((tmp[0].value()!=6)||(tmp[1].value()!=6)) { WY_THROW( WyRet() ); } if((tmp[2].value()!=89)||(tmp[3].value()!=89)) { WY_THROW( WyRet() ); } tmp.insert(tmp.size(),segarr); if(tmp.size()!=3*sizeof(arr)/sizeof(Element)) { WY_THROW( WyRet() ); } if((tmp[0].value()!=6)||(tmp[1].value()!=6)) { WY_THROW( WyRet() ); } if((tmp[2].value()!=89)||(tmp[3].value()!=89)) { WY_THROW( WyRet() ); } if((tmp[4].value()!=6)||(tmp[5].value()!=89)) { WY_THROW( WyRet() ); } Wy_Array<Element> tmp2(tmp); if(tmp!=tmp2) { WY_THROW( WyRet() ); } try { tmp.insert(tmp.size()+1,segarr); WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(tmp!=tmp2) { WY_THROW( WyRet() ); } if(e!=Wym_EINVAL) { WY_THROW( WyRet(e) ); } } catch(...) { WY_THROW( WyRet() ); }; if(tmp!=tmp2) { WY_THROW( WyRet() ); } try { tmp.insert(1,tmp.subseg()); WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(tmp!=tmp2) { WY_THROW( WyRet() ); } if(e!=Wym_ELOOP) { WY_THROW( WyRet(e) ); } } catch(...) { WY_THROW( WyRet() ); }; if(tmp!=tmp2) { WY_THROW( WyRet() ); } for(int i=0; i<100; ++i) { tmp2._reserve(tmp2.size()+segarr.size()); tmp.insert(tmp.size()>>1,segarr); tmp2.insert(tmp2.size()>>1,segarr); if(tmp!=tmp2) { WY_THROW( WyRet() ); } if(tmp._capacity()>(tmp.size()<<1)) { WY_THROW( WyRet() ); } if(tmp2._capacity()>(tmp2.size()<<1)) { WY_THROW( WyRet() ); } } } // chk insert(size_t,const Wy_Array<Element>&) { Wy_Array<Element> tmp; CHK_DEFAULT(tmp); Wy_Array<Element> tmp2; tmp2.push_back(6); tmp2.push_back(89); tmp.insert(0,tmp2); if(tmp.size()!=tmp2.size()) { WY_THROW( WyRet() ); } if((tmp[0].value()!=6)||(tmp[1].value()!=89)) { WY_THROW( WyRet() ); } tmp.insert(1,tmp2); if(tmp.size()!=2*tmp2.size()) { WY_THROW( WyRet() ); } if((tmp[0].value()!=6)||(tmp[1].value()!=6)) { WY_THROW( WyRet() ); } if((tmp[2].value()!=89)||(tmp[3].value()!=89)) { WY_THROW( WyRet() ); } tmp.insert(tmp.size(),tmp2); if(tmp.size()!=3*tmp2.size()) { WY_THROW( WyRet() ); } if((tmp[0].value()!=6)||(tmp[1].value()!=6)) { WY_THROW( WyRet() ); } if((tmp[2].value()!=89)||(tmp[3].value()!=89)) { WY_THROW( WyRet() ); } if((tmp[4].value()!=6)||(tmp[5].value()!=89)) { WY_THROW( WyRet() ); } tmp2.reset(tmp); if(tmp!=tmp2) { WY_THROW( WyRet() ); } try { tmp.insert(tmp.size()+1,tmp2); WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(tmp!=tmp2) { WY_THROW( WyRet() ); } if(e!=Wym_EINVAL) { WY_THROW( WyRet(e) ); } } catch(...) { WY_THROW( WyRet() ); }; if(tmp!=tmp2) { WY_THROW( WyRet() ); } try { tmp.insert(1,tmp); WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(tmp!=tmp2) { WY_THROW( WyRet() ); } if(e!=Wym_ELOOP) { WY_THROW( WyRet(e) ); } } catch(...) { WY_THROW( WyRet() ); }; if(tmp!=tmp2) { WY_THROW( WyRet() ); } } // chk resize(size_t) { Wy_Array<EleType> tmp; CHK_DEFAULT(tmp); tmp.resize(0); CHK_DEFAULT(tmp); tmp.resize(1); if(tmp.size()!=1) { WY_THROW( WyRet() ); } tmp.resize(2); if(tmp.size()!=2) { WY_THROW( WyRet() ); } tmp.resize(100); if(tmp.size()!=100) { WY_THROW( WyRet() ); } tmp.resize(101); if(tmp.size()!=101) { WY_THROW( WyRet() ); } tmp.resize(90); if(tmp.size()!=90) { WY_THROW( WyRet() ); } try { tmp.resize(tmp.max_capacity()+1); WY_THROW( WyRet() ); } catch(const typename Wy_Array<EleType>::Reply& e) { if(e!=Wym_EFBIG) { WY_THROW( WyRet() ); } }; if(tmp.size()!=90) { WY_THROW( WyRet() ); } tmp.resize(1); if(tmp.size()!=1) { WY_THROW( WyRet() ); } tmp.resize(0); if(tmp.size()!=0) { WY_THROW( WyRet() ); } CHK_DEFAULT(tmp); } // chk resize(size_t, const EleType&) { Wy_Array<EleType> tmp; CHK_DEFAULT(tmp); tmp.resize(0,EleType()); CHK_DEFAULT(tmp); tmp.resize(1,EleType()); if(tmp.size()!=1) { WY_THROW( WyRet() ); } tmp.resize(2,EleType()); if(tmp.size()!=2) { WY_THROW( WyRet() ); } tmp.resize(100,EleType()); if(tmp.size()!=100) { WY_THROW( WyRet() ); } tmp.resize(101,EleType()); if(tmp.size()!=101) { WY_THROW( WyRet() ); } tmp.resize(90,EleType()); if(tmp.size()!=90) { WY_THROW( WyRet() ); } try { tmp.resize(tmp.max_capacity()+1,EleType()); WY_THROW( WyRet() ); } catch(const typename Wy_Array<EleType>::Reply& e) { if(e!=Wym_EFBIG) { WY_THROW( WyRet() ); } }; if(tmp.size()!=90) { WY_THROW( WyRet() ); } tmp.resize(1,EleType()); if(tmp.size()!=1) { WY_THROW( WyRet() ); } tmp.resize(0,EleType()); if(tmp.size()!=0) { WY_THROW( WyRet() ); } CHK_DEFAULT(tmp); }};// chk Wy_Array<WyCSeg>, for WyCSeg not defined operator==static void ck_array_cseg(void){ Wy_Array<WyCSeg> tmp; if(tmp.is_default()==false) { WY_THROW( WyRet() ); } tmp.push_back(WyCSeg()); if(tmp.size()!=1) { WY_THROW( WyRet() ); }};enum ENUM { A,B,C };template<>struct Wy_Array<ENUM> : Wy__ArrayValue<ENUM> { WY_THROW_REPLY; Wy_Array() : Wy__ArrayValue<ENUM>() {}; Wy_Array(size_t s, const ENUM& elem) : Wy__ArrayValue<ENUM>(s,elem) {}; Wy_Array(const WySeg<ENUM>& s) : Wy__ArrayValue<ENUM>(s) {}; Wy_Array(const WySeg<const ENUM>& s) : Wy__ArrayValue<ENUM>(s) {}; Wy_Array(const Wy_Array& s) : Wy__ArrayValue<ENUM>(s) {}; Wy_Array(Wy_Array& p, Wy::ByMove_t t) : Wy__ArrayValue<ENUM>(p,t) {};};static void ck_2d(void){ Wy_Array< Wy_Array<int> > a(10, Wy_Array<int>(10,int())); if(a.size()!=10) { WY_THROW( WyRet() ); } for(size_t i=0; i<a.size(); ++i) { if(a[i].size()!=10) { WY_THROW( WyRet() ); } for(size_t j=0; j<a[i].size(); ++j) { //a[i][j]=i*j; } }};static void ck_seg(void){ const int arr1[]={154,542,53}; const int arr2[]={4,42,513}; const WySeg<const int> ele_arr1(arr1,3); const WySeg<const int> ele_arr2(arr2,3); Wy_Array< WySeg<const int> > a1; if(a1.size()!=0) { WY_THROW( WyRet() ); } a1.push_back( ele_arr1 ); if(a1.size()!=1) { WY_THROW( WyRet() ); } a1.push_back( ele_arr2 ); if(a1.size()!=2) { WY_THROW( WyRet() ); } if(a1[0][0]!=arr1[0]) { WY_THROW( WyRet() ); } if(a1[0][1]!=arr1[1]) { WY_THROW( WyRet() ); } if(a1[0][2]!=arr1[2]) { WY_THROW( WyRet() ); } if(*a1.begin()!=ele_arr1) { WY_THROW( WyRet() ); } if(a1.front()!=ele_arr1) { WY_THROW( WyRet() ); } if(a1.back()!=ele_arr2) { WY_THROW( WyRet() ); } //a1.resize(2);};int main(void)try { Wy::cout << "Checking wy_array.h ...\n"; t0(); int cobjs( Element::obj_cnt() ); t1(); if(Element::obj_cnt()!=cobjs) { Wy::cout << "objcnt before t1()= " << cobjs << ", after t1()= " << Element::obj_cnt() << '\n'; WY_THROW( WyRet() ); } cobjs= Element::obj_cnt(); t2(); if(Element::obj_cnt()!=cobjs) { Wy::cout << "objcnt before t2()= " << cobjs << ", after t2()= " << Element::obj_cnt() << '\n'; WY_THROW( WyRet() ); } t_sort(); ck_array< Wy_Array<Element> >(); ck_array< Wy_Array< Wy_Array<Element> > >(); ck_array<WyReply>(); ck_array<WyRet>(); ck_array<WyStr>(); ck_array<WyTimeSpec>(); ck_array<WyDate>(); ck_array<WyFileStat>(); ck_array<WyFileHandle>(); ck_array<WyDirEnt>(); ck_array<WyTermios>(); //ck_array<Wy_FdSet>(); ck_array<Wy_ThreadID>(); ck_array_cseg(); ck_array_value<char>(); ck_array_value<bool>(); ck_array_value<signed char>(); ck_array_value<signed short>(); ck_array_value<signed int>(); ck_array_value<signed long int>(); ck_array_value<signed long long int>(); ck_array_value<unsigned char>(); ck_array_value<unsigned short>(); ck_array_value<unsigned int>(); ck_array_value<unsigned long int>(); ck_array_value<unsigned long long int>(); ck_array_value<float>(); ck_array_value<double>(); ck_array_value<long double>(); ck_array_value<char*>(); ck_array_value<const int*>(); ck_array_value<float*>(); ck_array_value<Element*>(); ck_array_value<const Element*>(); ck_array_value<int(*)(int)>(); ck_array_value<ENUM>(); ck_array<bool>(); ck_array<signed int>(); ck_array<unsigned int>(); ck_array<float>(); ck_2d(); ck_seg(); Wy::cout << "Checked Ok\n"; return(0);}catch(const WyRet& e) { Wy::cerr << Wy::wrd(e) << "\n"; return(e->c_repcode());}catch(const std::exception& e) { Wy::cerr << "std::exception\n"; return(-1);}catch(...) { Wy::cerr << "unknown unwind\n"; return(-1);};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -