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;
}
Exemple #4
0
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();
}