#include <CGAL/Triangulation_data_structure.h>
#include <CGAL/assertions.h>
#include <vector>
int main()
{
TDS S;
CGAL_assertion( 7 == S.maximal_dimension() );
CGAL_assertion( -2 == S.current_dimension() );
CGAL_assertion( S.is_valid() );
std::vector<TDS::Vertex_handle> V(10);
V[0] = S.insert_increase_dimension();
CGAL_assertion( -1 == S.current_dimension() );
for( int i = 1; i <= 5; ++i )
V[i] = S.insert_increase_dimension(V[0]);
CGAL_assertion( 4 == S.current_dimension() );
CGAL_assertion( 6 == S.number_of_vertices() );
CGAL_assertion( 6 == S.number_of_full_cells() );
TDS::Full_cell_handle c = V[5]->full_cell();
V[6] = S.insert_in_full_cell(c);
CGAL_assertion( 7 == S.number_of_vertices() );
CGAL_assertion( 10 == S.number_of_full_cells() );
c = V[3]->full_cell();
TDS::Facet ft(c, 2);
V[7] = S.insert_in_facet(ft);
CGAL_assertion( 8 == S.number_of_vertices() );
CGAL_assertion( 16 == S.number_of_full_cells() );
c = V[3]->full_cell();
TDS::Face face(c);
face.set_index(0, 2);
face.set_index(1, 4);
V[8] = S.insert_in_face(face);
CGAL_assertion( S.is_valid() );
TDS::Full_cell_handle hole[2];
hole[0] = V[8]->full_cell();
hole[1] = hole[0]->neighbor(0);
ft = TDS::Facet(hole[0], 1);
V[9] = S.insert_in_hole(hole, hole+2, ft);
CGAL_assertion( S.is_valid() );
return 0;
}