void make_one_run(const char* filename){ std::cout << "== testing with " << filename << " ==\n"; //read weighted points std::list<Weighted_point > lst; fill_wp_lists(filename,lst); //---Test weighted alpha shape //build regular triangulation WFixed_DT T(lst.begin(),lst.end()); if (lst.size()!=T.number_of_vertices()) std::cout << lst.size()-T.number_of_vertices() << " hidden vertices.\n"; std::cout << "Build Fixed weighted alpha complex" << std::endl; WFixed_AS wfixed_as(T); //copy triangulation for family alpha-shape WDT T1; T1.set_infinite_vertex( T1.tds().copy_tds( wfixed_as.tds(),wfixed_as.infinite_vertex() ) ); std::cout << "Build family weighted alpha complex" << std::endl; WAS w_as(T1,0,WAS::GENERAL); //DEBUG info // print_comparison(wfixed_as,w_as); //compare classification of simplices std::cout << "Compare both.... "; compare_all(wfixed_as,w_as); std::cout << "OK\n"; //---Test alpha shape Fixed_DT delaunay0(lst.begin(),lst.end()); DT delaunay1; delaunay1.set_infinite_vertex( delaunay1.tds().copy_tds( delaunay0.tds(),delaunay0.infinite_vertex() ) ); std::cout << "Build Fixed alpha complex" << std::endl; Fixed_AS fixed_as(delaunay0); std::cout << "Build family alpha complex" << std::endl; AS as(delaunay1,0,AS::GENERAL); std::cout << "Compare both.... "; compare_all(fixed_as,as); std::cout << "OK\n"; //test dynamic version std::cout << "Test dynamic remove \n"; test_dynamic_remove(lst); std::cout << "Test dynamic insert \n"; test_dynamic_insert(lst); }
void test_dynamic_remove(const std::list<Weighted_point >& lst) { WFixed_AS dynamic_as(lst.begin(),lst.end()); // int k=0; while (dynamic_as.dimension() == 3) { // std::cout << ++k << " " << std::flush; WFixed_DT tr_copy; tr_copy.set_infinite_vertex( tr_copy.tds().copy_tds( dynamic_as.tds(), dynamic_as.infinite_vertex() ) ); WFixed_AS static_as( tr_copy ); compare_all(dynamic_as,static_as); dynamic_as.remove(dynamic_as.finite_vertices_begin()); } std::cout << "done"<< std::endl; while (dynamic_as.number_of_vertices() != 0) dynamic_as.remove(dynamic_as.finite_vertices_begin()); }
void test_dynamic_insert(const std::list<Weighted_point >& lst) { typedef std::list<Weighted_point >::const_iterator Iterator; Iterator min_it=lst.begin(); WFixed_AS dynamic_as; while(min_it!=lst.end() && dynamic_as.dimension() != 3) { dynamic_as.insert(*min_it); ++min_it; } // int k=0; for (Iterator it=min_it ;it!=lst.end(); ++it) { // std::cout << ++k << " " << std::flush; dynamic_as.insert(*it); WFixed_DT tr_copy; tr_copy.set_infinite_vertex( tr_copy.tds().copy_tds( dynamic_as.tds(), dynamic_as.infinite_vertex() ) ); WFixed_AS static_as (tr_copy); compare_all(dynamic_as,static_as); } std::cout << "done"<< std::endl; }
void CoordXmlTest::readXml() { QFETCH(int, num_coords); MapCoordVector coords(num_coords, proto_coord); buffer.buffer().truncate(0); QBuffer header; { QXmlStreamWriter xml(&header); header.open(QBuffer::ReadWrite); xml.setAutoFormatting(false); xml.writeStartDocument(); xml.writeStartElement("root"); xml.writeCharacters(" "); // flush root start element buffer.open(QBuffer::ReadWrite); xml.setDevice(&buffer); xml.writeStartElement("coords"); writeXml_implementation(coords, xml); xml.writeEndElement(/* coords */); xml.setDevice(NULL); buffer.close(); header.close(); } header.open(QBuffer::ReadOnly); buffer.open(QBuffer::ReadOnly); QXmlStreamReader xml; xml.addData(header.buffer()); xml.readNextStartElement(); QCOMPARE(xml.name().toString(), QString("root")); bool failed = false; QBENCHMARK { // benchmark iteration overhead coords.clear(); xml.addData(buffer.data()); xml.readNextStartElement(); if (xml.name() != "coords") { failed = true; break; } while(xml.readNextStartElement()) { if (xml.name() != XmlStreamLiteral::coord) { failed = true; break; } XmlElementReader element(xml); auto x = element.attribute<qint32>(literal::x); auto y = element.attribute<qint32>(literal::y); auto flags = element.attribute<int>(literal::flags); coords.push_back(MapCoord::fromNative(x, y, flags)); } } QVERIFY(!failed); QCOMPARE((int)coords.size(), num_coords); QVERIFY(compare_all(coords, proto_coord)); header.close(); buffer.close(); }