📄 chk_array.cpp
字号:
int n_elem,v; for(n_elem=0,v=43; n_elem<65; ++n_elem,++v) { tmp.reset(n_elem,Element(v)); if(tmp.size()!=size_t(n_elem)) { WY_THROW( WyRet() ); } for(size_t i=0; i<tmp.size(); ++i) { if(tmp[i]!=Element(v)) { WY_THROW( WyRet() ); } } if(tmp._capacity()<Wy_Array<Element>::min_capacity()) { WY_THROW( WyRet() ); } if(tmp._capacity()<size_t(n_elem)) { WY_THROW( WyRet() ); } } for(n_elem=65,v=11; n_elem>0; --n_elem,++v) { tmp.reset(n_elem,Element(v)); if(tmp.size()!=size_t(n_elem)) { WY_THROW( WyRet() ); } for(size_t i=0; i<tmp.size(); ++i) { if(tmp[i]!=Element(v)) { WY_THROW( WyRet() ); } } if(tmp._capacity()<Wy_Array<Element>::min_capacity()) { WY_THROW( WyRet() ); } if(tmp._capacity()<size_t(n_elem)) { WY_THROW( WyRet() ); } } try { tmp.reset(Wy_Array<Element>::max_capacity()+1,Element()); WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(e!=Wym_EFBIG) { throw; } }; } // chk operator= (const Wy_Array&) { Wy_Array<Element> tmp1; CHK_DEFAULT(tmp1); Wy_Array<Element> tmp2; CHK_DEFAULT(tmp2); if(&(tmp2=tmp1)!=&tmp2) { WY_THROW( WyRet() ); } CHK_DEFAULT(tmp2); tmp2=tmp2; CHK_DEFAULT(tmp2); tmp1.push_back(8); if(&(tmp2=tmp1)!=&tmp2) { WY_THROW( WyRet() ); } if(tmp2!=tmp1) { WY_THROW( WyRet() ); } if(tmp2._capacity()<tmp2.min_capacity()) { WY_THROW( WyRet() ); } tmp1.push_back(7); tmp2=tmp1; if(tmp2==tmp1) { } else { WY_THROW( WyRet() ); } if(tmp2._capacity()<tmp2.min_capacity()) { WY_THROW( WyRet() ); } tmp2=tmp2; // self-reset if(tmp2!=tmp1) { WY_THROW( WyRet() ); } if(tmp2._capacity()<tmp2.min_capacity()) { WY_THROW( WyRet() ); } } // chk operator= (const WySeg<T>&) { Wy_Array<Element> tmp1; CHK_DEFAULT(tmp1); Wy_Array<Element> tmp2; CHK_DEFAULT(tmp2); if(&(tmp2=tmp1.subseg())!=&tmp2) { WY_THROW( WyRet() ); } CHK_DEFAULT(tmp2); tmp1.push_back(8); if(&(tmp2=tmp1.subseg())!=&tmp2) { WY_THROW( WyRet() ); } if(tmp2!=tmp1) { WY_THROW( WyRet() ); } if(tmp2._capacity()<tmp2.min_capacity()) { WY_THROW( WyRet() ); } tmp1.push_back(7); tmp2=tmp1.subseg(); if(tmp2==tmp1) { } else { WY_THROW( WyRet() ); } if(tmp2._capacity()<tmp2.min_capacity()) { WY_THROW( WyRet() ); } try { tmp2=tmp2.subseg(); // self-reset WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(e!=Wym_ELOOP) { WY_THROW(r); } } catch(...) { throw; }; if(tmp2!=tmp1) { WY_THROW( WyRet() ); } if(tmp2._capacity()<tmp2.min_capacity()) { WY_THROW( WyRet() ); } } // chk insert(size_t,const Element&) { Wy_Array<Element> tmp; CHK_DEFAULT(tmp); tmp.insert(0,4); if(tmp.size()!=1) { WY_THROW( WyRet() ); } if(tmp[0].value()!=4) { WY_THROW( WyRet() ); } tmp.insert(0,3); if(tmp.size()!=2) { WY_THROW( WyRet() ); } if(tmp[0].value()!=3) { WY_THROW( WyRet() ); } if(tmp[1].value()!=4) { WY_THROW( WyRet() ); } tmp.insert(1,5); if(tmp.size()!=3) { WY_THROW( WyRet() ); } if(tmp[0].value()!=3) { WY_THROW( WyRet() ); } if(tmp[1].value()!=5) { WY_THROW( WyRet() ); } if(tmp[2].value()!=4) { WY_THROW( WyRet() ); } Wy_Array<Element> tmp_cpy(tmp); if(tmp!=tmp_cpy) { WY_THROW( WyRet() ); } try { tmp.insert(99,5); } catch(const Wy_Array<Element>::Reply& e) { if(tmp!=tmp_cpy) { WY_THROW( WyRet() ); } if(e!=Wym_EINVAL) { WY_THROW( WyRet(e) ); } } catch(...) { WY_THROW( WyRet() ); }; tmp.reset(); CHK_DEFAULT(tmp); for(int i=0; i<100; ++i) { tmp.insert(i,i); if(tmp[i].value()!=i) { WY_THROW( WyRet() ); } if(tmp.size()!=size_t(i+1)) { WY_THROW( WyRet() ); } } for(int i=0; i<100; ++i) { if(tmp[i].value()!=i) { WY_THROW( WyRet() ); } } tmp.reset(); CHK_DEFAULT(tmp); tmp.insert(0,0); tmp.insert(1,1); tmp.insert(2,2); // 012 tmp.insert(1,tmp.back()); // 0212 tmp.insert(3,tmp.back()); // 02122 if(tmp[0]!=0) { WY_THROW( WyRet() ); } if(tmp[1]!=2) { WY_THROW( WyRet() ); } if(tmp[2]!=1) { WY_THROW( WyRet() ); } if(tmp[3]!=2) { WY_THROW( WyRet() ); } if(tmp[4]!=2) { 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&) { Wy_Array<Element> tmp; CHK_DEFAULT(tmp); tmp.push_back(6); tmp.push_back(89); if(tmp.size()!=2) { WY_THROW( WyRet() ); } if((tmp[0].value()!=6)||(tmp[1].value()!=89)) { WY_THROW( WyRet() ); } Wy_Array<Element> tmp2(tmp); tmp2.insert(1,tmp); if(tmp2.size()!=2*tmp.size()) { WY_THROW( WyRet() ); } if((tmp2[0].value()!=6)||(tmp2[1].value()!=6)) { WY_THROW( WyRet() ); } if((tmp2[2].value()!=89)||(tmp2[3].value()!=89)) { WY_THROW( WyRet() ); } tmp.reset(tmp2); 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(const WyRet& e) { WY_THROW( WyRet(e) ); } catch(...) { WY_THROW( WyRet() ); }; } // chk resize(size_t) { Wy_Array<Element> tmp; CHK_DEFAULT(tmp); tmp.resize(0); CHK_DEFAULT(tmp); tmp.resize(1); if(tmp.size()!=1) { WY_THROW( WyRet() ); } if(tmp[0].is_default()==false) { WY_THROW( WyRet() ); } tmp.push_back(1); tmp.resize(3); if(tmp.size()!=3) { WY_THROW( WyRet() ); } Wy_Array<Element> tmp2(tmp); tmp.resize(99); if(tmp.size()!=99) { WY_THROW( WyRet() ); } if(tmp[1]!=1) { WY_THROW( WyRet() ); } tmp.resize(tmp2.size()); if(tmp!=tmp2) { WY_THROW( WyRet() ); } Wy_Array<Element> tmp_cpy(tmp); if(tmp!=tmp_cpy) { WY_THROW( WyRet() ); } try { tmp.resize(tmp.max_capacity()+1); WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(tmp!=tmp_cpy) { WY_THROW( WyRet() ); } if(e!=Wym_EFBIG) { WY_THROW( WyRet(e) ); } } catch(...) { WY_THROW( WyRet() ); }; } // chk resize(size_t, const T&) { Wy_Array<Element> tmp; CHK_DEFAULT(tmp); tmp.resize(0,Element()); CHK_DEFAULT(tmp); tmp.resize(1,Element(100)); if(tmp.size()!=1) { WY_THROW( WyRet() ); } if(tmp[0].value()!=100) { WY_THROW( WyRet() ); } tmp.push_back(1); tmp.resize(3,Element(100)); if(tmp.size()!=3) { WY_THROW( WyRet() ); } Wy_Array<Element> tmp2(tmp); tmp.resize(99,Element(99)); if(tmp.size()!=99) { WY_THROW( WyRet() ); } if(tmp[1]!=1) { WY_THROW( WyRet() ); } for(size_t i=3; i<tmp.size(); ++i) { if(tmp[i]!=99) { WY_THROW( WyRet() ); } } tmp.resize(tmp2.size()); if(tmp!=tmp2) { WY_THROW( WyRet() ); } Wy_Array<Element> tmp_cpy(tmp); if(tmp!=tmp_cpy) { WY_THROW( WyRet() ); } try { tmp.resize(tmp.max_capacity()+1,Element()); WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(tmp!=tmp_cpy) { WY_THROW( WyRet() ); } if(e!=Wym_EFBIG) { WY_THROW( WyRet(e) ); } } catch(...) { WY_THROW( WyRet() ); }; } // chk replace(size_t,size_t,size_t,const T&) { const int ObjCnt=Element::obj_cnt(); Wy_Array<Element> tmp; CHK_DEFAULT(tmp); try { tmp.replace(1,1,1,Element()); WY_THROW( WyRet() ); } catch(const Wy_Array<Element>::Reply& e) { if(e!=Wym_EINVAL) { WY_THROW( WyRet(e) ); } }; CHK_DEFAULT(tmp); if(ObjCnt!=Element::obj_cnt()) { WY_THROW( WyRet() ); } // loop test, so the second loop wont reallocate buffer // for(int loopcnt=0; loopcnt<3; ++loopcnt) { tmp.replace(0,1,0,Element()); CHK_DEFAULT(tmp); if(ObjCnt!=Element::obj_cnt()) { WY_THROW( WyRet() ); } tmp.replace(0,1,1,Element(5)); if(tmp.size()!=1) { WY_THROW( WyRet() ); } if(tmp[0]!=5) { WY_THROW( WyRet() ); } if(Element::obj_cnt()!=ObjCnt+1) { WY_THROW( WyRet() ); } tmp.replace(0,0,1,Element(4)); if(tmp.size()!=2) { WY_THROW( WyRet() ); } if(tmp[0]!=4) { WY_THROW( WyRet() ); } if(Element::obj_cnt()!=ObjCnt+2) { WY_THROW( WyRet() ); } tmp.replace(2,0,1,Element(6)); if(tmp.size()!=3) { WY_THROW( WyRet() ); } if(Element::obj_cnt()!=ObjCnt+3) { WY_THROW( WyRet() ); } if(tmp[0]!=4) { WY_THROW( WyRet() ); } if(tmp[1]!=5) { WY_THROW( WyRet() ); } if(tmp[2]!=6) { WY_THROW( WyRet() ); } tmp.replace(1,1,1,Element(2)); if(tmp.size()!=3) { WY_THROW( WyRet() ); } if(Element::obj_cnt()!=ObjCnt+3) { WY_THROW( WyRet() ); } if(tmp[0]!=4) { WY_THROW( WyRet() ); } if(tmp[1]!=2) { WY_THROW( WyRet() ); } if(tmp[2]!=6) { WY_THROW( WyRet() ); } tmp.replace(1,1,2,Element(2)); if(tmp.size()!=4) { WY_THROW( WyRet() ); } if(Element::obj_cnt()!=ObjCnt+4) { WY_THROW( WyRet() ); } if(tmp[0]!=4) { WY_THROW( WyRet() ); } if(tmp[1]!=2) { WY_THROW( WyRet() ); } if(tmp[2]!=2) { WY_THROW( WyRet() ); } if(tmp[3]!=6) { WY_THROW( WyRet() ); } tmp.replace(0,1,2,Element(4)); if(tmp.size()!=5) { WY_THROW( WyRet() ); } if(Element::obj_cnt()!=ObjCnt+5) { WY_THROW( WyRet() ); } if(tmp[0]!=4) { WY_THROW( WyRet() );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -