// //using namespace pugi; int main() { int ok=0; int fail=0; string xml("<Search name='request_001' id='12345'><Filters><Filter name='CPU-Frequency' /><Filter name='MEM-Count' /><Filter name='OS-Name' /></Filters><Data><Compare type='OR'><Compare type='AND'><Atrybute name='CPU-frequency' compType='>=' value='1.0GHz' /><Atrybute name='CPU-frequency' compType='<=' value='2.0GHz' /></Compare><Atrybute name='MEM-Count' compType='>=' value='4GB' /></Compare></Data></Search>"); cout<<"Konstruktor domyslny -> "; Search sz; if(sz.getName()!="") { ++ok; cout<<"OK :"<<sz.getName()<<","<<sz.getId()<<endl; } else { ++fail; cout<<"FAIL "<<endl; } Search szuka; string s1("szukam"); cout<<"Nadanie nazwy -> "; szuka.setName(s1); if(s1==szuka.getName()) { ++ok; cout<<"OK :"<<sz.getName()<<endl; } else { ++fail; cout<<"FAIL "<<endl; } int id_n=60; cout<<"Nadanie nowej wartości id -> "; szuka.setId(id_n); if(szuka.getIdI()==id_n) { ++ok; cout<<"OK :"<<szuka.getId()<<endl; } else { ++fail; cout<<"FAIL "<<szuka.getId()<<endl; } Atribute* at=new Atribute(); vector<Atribute*> k; k.push_back(at); vector<Atribute> k2; Monitor m; Monitor m1("mon1",k); m1.addAtrib(at); m.addAtrib(at); m.addAtrib(at); m.addAtrib(at); at->setName("nnn"); m.addAtrib(at); Response rr; rr.addMonitor(&m); rr.addMonitor(&m); rr.addMonitor(&m1); vector<Monitor*> mov=rr.getMonitor(); Response rr1(3,mov); int r=mov.size(); Compare c; c.addInfo(at); at->setType("xxx"); c.addInfo(at); vector<Info*> n=c.getInfo(); r=n.size(); Compare c2; c2.Copy(c); c2.addInfo(at); c2.addInfo(&c); int siz=szuka.getComp().size(); cout<<"Dodanie porównania -> "; szuka.addCompare(&c2); if(szuka.getComp().size()>siz) { ++ok; cout<<"OK "<<endl; } else { ++fail; cout<<"FAIL "<<endl; } szuka.addCompare(&c); string* napis=new string("napis"); siz=szuka.getFilters().size(); cout<<"Dodanie filtra -> "; szuka.addFilter(napis); if(szuka.getFilters().size()>siz) { ++ok; cout<<"OK "<<endl; } else { ++fail; cout<<"FAIL "<<endl; } //setCompare vector<Compare* > c_vec; c_vec.push_back(&c); c_vec.push_back(&c2); c_vec.push_back(&c); c_vec.push_back(&c); c_vec.push_back(&c2); siz=szuka.getComp().size(); cout<<"Wstawienie nowego wektora porównań -> "; szuka.setCompare(c_vec); if(szuka.getComp().size()!=siz) { ++ok; cout<<"OK "<<endl; } else { ++fail; cout<<"FAIL "<<endl; } //setFilters vector<string*> fil_v; siz=szuka.getFilters().size(); cout<<"ustawienie nowych filtrów -> "; szuka.setFilters(fil_v); if(siz!=szuka.getFilters().size()) { ++ok; cout<<"OK "<<endl; } else { ++fail; cout<<"FAIL "<<endl; } cout<<"Konstruktor zależny od striga zawierającego XMLa -> "; Search szuka2(xml); //szuka2.loadS(xml); if(szuka2.getName()!=""&&szuka2.getIdI()>0) { ++ok; cout<<"OK"; cout<<endl<<" --> utworzony obiekt o nazwie:"<<szuka2.getName()<<" i id: "<<szuka2.getId()<<endl; cout<<" --> z filtrami:"<<endl; vector<string*> vs=szuka2.getFilters(); r=vs.size(); for(int i=0;i<r;++i) { string ns=(*vs[i]); cout<<" "<<ns<<endl; } cout<<" --> z "; vector<Compare*> vc2=szuka2.getComp(); cout<<vc2.size()<<" elementami porównawczymi:"<<endl; r=vc2.size(); for(int i=0;i<r;++i) { int rr=vc2[i]->getInfo().size(); cout<<"\t type: "<<vc2[i]->getType()<<" , rozmiar: "<<rr<<endl; for(int j=0;j<rr;++j) { Compare* cc=new Compare(); Atribute* ati=new Atribute(); if(dynamic_cast<Compare*>(vc2[i]->getInfo()[j])) { cc=(dynamic_cast<Compare*>(vc2[i]->getInfo()[j]))->Copy(); int r2=cc->getInfo().size(); cout<<"\t\t Porownanie: "<<cc->getType()<<" , rozmiar: "<<r2<<endl; for(int k=0;k<r2;++k) { Compare* cc1=new Compare(); Atribute* at1=new Atribute(); if(dynamic_cast<Compare*>(cc->getInfo()[k])) { cc1=(dynamic_cast<Compare*>(cc->getInfo()[k]))->Copy(); cout<<"\t\t\t Porownanie: "<<cc1->getType()<<" , rozmiar: "<<cc1->getInfo().size()<<endl; delete cc1; } else { if(dynamic_cast<Atribute*>(cc->getInfo()[k])) { at1=(dynamic_cast<Atribute*>(cc->getInfo()[k]))->Copy(); cout<<"\t\t\t Atrybut: "<<at1->getName()<<" , "<<at1->getType()<<" , "<<at1->getValue()<<endl; delete at1; } else { cout<<"FAIL"<<endl; } } } delete cc; } else { if(dynamic_cast<Atribute*>(vc2[i]->getInfo()[j])) { ati=(dynamic_cast<Atribute*>(vc2[i]->getInfo()[j]))->Copy(); cout<<"\t\t Atribut: "<<ati->getName()<<" , "<<ati->getType()<<" , "<<ati->getValue()<<endl; delete ati; } else { cout<<"FAIL"; } } } } } else { ++fail; cout<<"NIC"<<endl; } cout<<"Podanie niepoprawnego ciagu "<<endl; string inny("<cos></cos>"); Search s21(inny); cout<<s21.getName()<<" , "<<s21.getId()<<" , Porownania: "<<s21.getComp().size()<<" , filtry "<<s21.getFilters().size()<<endl; Search s33; s33.loadS(""); cout<<s33.getName()<<" , "<<s33.getId()<<" , Porownania: "<<s33.getComp().size()<<" , filtry "<<s33.getFilters().size()<<endl; cout<<endl<<"Przeprowadzono "<<fail+ok<<" testów, gdzie:"<<endl<<"-> Poprawnych: "<<ok<<endl<<"-> Niepoprawnych: "<<fail<<endl; return 0; }