From 2342b037b2eda4f0b8933f54f080fd401cac60a4 Mon Sep 17 00:00:00 2001 From: Iordan Iordanov Date: Tue, 8 Jan 2019 10:23:23 +0100 Subject: [PATCH] Preliminary testsuite --- .../Hyperbolic_triangulation_2/CMakeLists.txt | 28 +++++++ .../ht2_test_clear.cpp | 57 +++++++++++++++ .../ht2_test_copy.cpp | 46 ++++++++++++ .../ht2_test_remove.cpp | 73 +++++++++++++++++++ .../ht2_test_swap.cpp | 57 +++++++++++++++ 5 files changed, 261 insertions(+) create mode 100644 Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/CMakeLists.txt create mode 100644 Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_clear.cpp create mode 100644 Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_copy.cpp create mode 100644 Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_remove.cpp create mode 100644 Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_swap.cpp diff --git a/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/CMakeLists.txt b/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/CMakeLists.txt new file mode 100644 index 00000000000..4c3156e2708 --- /dev/null +++ b/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/CMakeLists.txt @@ -0,0 +1,28 @@ +# Created by the script cgal_create_cmake_script +# This is the CMake script for compiling a CGAL application. + + +project( Hyperbolic_triangulation_2_tests ) + +cmake_minimum_required(VERSION 2.8.10) + +find_package(CGAL QUIET COMPONENTS Core ) + +if ( CGAL_FOUND ) + + include( ${CGAL_USE_FILE} ) + + include( CGAL_CreateSingleSourceCGALProgram ) + + create_single_source_cgal_program( "ht2_test_clear.cpp" ) + create_single_source_cgal_program( "ht2_test_remove.cpp" ) + create_single_source_cgal_program( "ht2_test_swap.cpp" ) + create_single_source_cgal_program( "ht2_test_copy.cpp" ) + #create_single_source_cgal_program( "ht2_test_equality.cpp" ) + +else() + + message(STATUS "This program requires the CGAL library, and will not be compiled.") + +endif() + diff --git a/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_clear.cpp b/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_clear.cpp new file mode 100644 index 00000000000..7612933613e --- /dev/null +++ b/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_clear.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +typedef CGAL::Hyperbolic_Delaunay_triangulation_traits_2<> Traits; +typedef CGAL::Hyperbolic_Delaunay_triangulation_2 HDTriangulation; +typedef HDTriangulation::Point Point; + +typedef CGAL::Random_points_in_square_2< + Point, + CGAL::Creator_uniform_2< double, Point > > Point_generator; + +int main(int argc, char**argv) +{ + + Point_generator gen(1.); + std::vector pts; + for (int i = 0; i < 100; ++i) + pts.push_back(*(++gen)); + + HDTriangulation tri; + tri.insert(pts.begin(), pts.end()); + + int nv = tri.number_of_vertices(); + int nf = tri.number_of_hyperbolic_faces(); + + std::cout << " -------- inserting --------" << std::endl; + std::cout << "Vertices in triangulation: " << nv << std::endl; + std::cout << "Faces in triangulation: " << nf << std::endl; + std::cout << "Dimension of triangulation: " << tri.dimension() << std::endl; + assert(tri.dimension() == 2); + + tri.clear(); + std::cout << " -------- clearing --------" << std::endl; + std::cout << "Vertices in triangulation: " << tri.number_of_vertices() << std::endl; + std::cout << "Faces in triangulation: " << tri.number_of_hyperbolic_faces() << std::endl; + std::cout << "Dimension of triangulation: " << tri.dimension() << std::endl; + assert(tri.number_of_vertices() == 0); + assert(tri.number_of_hyperbolic_faces() == 0); + assert(tri.dimension() < 2); + + tri.insert(pts.begin(), pts.end()); + std::cout << " -------- re-inserting --------" << std::endl; + std::cout << "Vertices in triangulation: " << tri.number_of_vertices() << std::endl; + std::cout << "Faces in triangulation: " << tri.number_of_hyperbolic_faces() << std::endl; + std::cout << "Dimension of triangulation: " << tri.dimension() << std::endl; + assert(tri.number_of_hyperbolic_faces() == nf); + assert(tri.number_of_vertices() == nv); + assert(tri.dimension() == 2); + + assert(tri.is_valid()); + + std::cout << " -------- SUCCESS --------" << std::endl; + + return 0; +} \ No newline at end of file diff --git a/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_copy.cpp b/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_copy.cpp new file mode 100644 index 00000000000..e61afb2972a --- /dev/null +++ b/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_copy.cpp @@ -0,0 +1,46 @@ +#include +#include +#include +#include + +typedef CGAL::Hyperbolic_Delaunay_triangulation_traits_2<> Traits; +typedef CGAL::Hyperbolic_Delaunay_triangulation_2 HDTriangulation; +typedef HDTriangulation::Point Point; +typedef HDTriangulation::Vertex_handle Vertex_handle; + +typedef CGAL::Random_points_in_disc_2< + Point, + CGAL::Creator_uniform_2< double, Point > > Point_generator; + +int main(int argc, char**argv) +{ + + Point_generator gen(0.95); + std::vector pts1; + for (int i = 0; i < 75; ++i) + pts1.push_back(*(++gen)); + + std::vector pts2; + for (int i = 0; i < 150; ++i) + pts2.push_back(*(++gen)); + + HDTriangulation tri1; + tri1.insert(pts1.begin(), pts1.end()); + std::cout << "Vertices in tri1: " << tri1.number_of_vertices() << std::endl; + std::cout << "Faces in tri1: " << tri1.number_of_hyperbolic_faces() << std::endl; + + HDTriangulation tri2; + tri2 = tri1; + std::cout << "Vertices in tri2: " << tri2.number_of_vertices() << std::endl; + std::cout << "Faces in tri2: " << tri2.number_of_hyperbolic_faces() << std::endl; + + assert(tri1.is_valid()); + assert(tri2.is_valid()); + assert(tri1.number_of_vertices() == tri2.number_of_vertices()); + assert(tri1.number_of_hyperbolic_faces() == tri2.number_of_hyperbolic_faces()); + + std::cout << " -------- SUCCESS --------" << std::endl; + + + return 0; +} \ No newline at end of file diff --git a/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_remove.cpp b/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_remove.cpp new file mode 100644 index 00000000000..03d6782e7c6 --- /dev/null +++ b/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_remove.cpp @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +typedef CGAL::Hyperbolic_Delaunay_triangulation_traits_2<> Traits; +typedef CGAL::Hyperbolic_Delaunay_triangulation_2 HDTriangulation; +typedef HDTriangulation::Point Point; +typedef HDTriangulation::Vertex_handle Vertex_handle; + +typedef CGAL::Random_points_in_square_2< + Point, + CGAL::Creator_uniform_2< double, Point > > Point_generator; + +int main(int argc, char**argv) +{ + + Point_generator gen(1.); + std::vector pts; + for (int i = 0; i < 100; ++i) + pts.push_back(*(++gen)); + + HDTriangulation tri; + std::vector verts; + for (int i = 0; i < pts.size(); ++i) + verts.push_back(tri.insert(pts[i])); + + int nv = tri.number_of_vertices(); + int nf = tri.number_of_hyperbolic_faces(); + + std::cout << " -------- inserting --------" << std::endl; + std::cout << "Vertices in triangulation: " << nv << std::endl; + std::cout << "Faces in triangulation: " << nf << std::endl; + std::cout << "Dimension of triangulation: " << tri.dimension() << std::endl; + assert(tri.dimension() == 2); + + std::cout << " -------- removing --------" << std::endl; + for (int i = 0; i < verts.size(); ++i) + { + tri.remove(verts[i]); + } + + std::cout << "Vertices in triangulation: " << tri.number_of_vertices() << std::endl; + std::cout << "Faces in triangulation: " << tri.number_of_hyperbolic_faces() << std::endl; + std::cout << "Dimension of triangulation: " << tri.dimension() << std::endl; + + assert(tri.is_valid()); + + std::cout << " -------- SUCCESS --------" << std::endl; + + HDTriangulation tri2; + verts.clear(); + for (int i = 0; i < pts.size(); ++i) + verts.push_back(tri2.insert(pts[i])); + std::cout << " -------- inserting --------" << std::endl; + std::cout << "Vertices in triangulation: " << tri2.number_of_vertices() << std::endl; + std::cout << "Faces in triangulation: " << tri2.number_of_hyperbolic_faces() << std::endl; + std::cout << "Dimension of triangulation: " << tri2.dimension() << std::endl; + assert(tri2.dimension() == 2); + + tri2.remove(verts.begin(), verts.end()); + + std::cout << "Vertices in triangulation: " << tri2.number_of_vertices() << std::endl; + std::cout << "Faces in triangulation: " << tri2.number_of_hyperbolic_faces() << std::endl; + std::cout << "Dimension of triangulation: " << tri2.dimension() << std::endl; + + assert(tri2.is_valid()); + + std::cout << " -------- SUCCESS --------" << std::endl; + + + return 0; +} \ No newline at end of file diff --git a/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_swap.cpp b/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_swap.cpp new file mode 100644 index 00000000000..6c7d2a3b5aa --- /dev/null +++ b/Hyperbolic_triangulation_2/tests/Hyperbolic_triangulation_2/ht2_test_swap.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +typedef CGAL::Hyperbolic_Delaunay_triangulation_traits_2<> Traits; +typedef CGAL::Hyperbolic_Delaunay_triangulation_2 HDTriangulation; +typedef HDTriangulation::Point Point; +typedef HDTriangulation::Vertex_handle Vertex_handle; + +typedef CGAL::Random_points_in_disc_2< + Point, + CGAL::Creator_uniform_2< double, Point > > Point_generator; + +int main(int argc, char**argv) +{ + + Point_generator gen(0.95); + std::vector pts1; + for (int i = 0; i < 75; ++i) + pts1.push_back(*(++gen)); + + std::vector pts2; + for (int i = 0; i < 150; ++i) + pts2.push_back(*(++gen)); + + HDTriangulation tri1; + tri1.insert(pts1.begin(), pts1.end()); + std::cout << "Vertices in tri1: " << tri1.number_of_vertices() << std::endl; + std::cout << "Faces in tri1: " << tri1.number_of_hyperbolic_faces() << std::endl; + + HDTriangulation tri2; + tri2.insert(pts2.begin(), pts2.end()); + std::cout << "Vertices in tri2: " << tri2.number_of_vertices() << std::endl; + std::cout << "Faces in tri2: " << tri2.number_of_hyperbolic_faces() << std::endl; + + assert(tri1.is_valid()); + assert(tri2.is_valid()); + + tri1.swap(tri2); + + std::cout << " -------- AFTER SWAP --------" << std::endl; + + std::cout << "Vertices in tri1: " << tri1.number_of_vertices() << std::endl; + std::cout << "Faces in tri1: " << tri1.number_of_hyperbolic_faces() << std::endl; + + std::cout << "Vertices in tri2: " << tri2.number_of_vertices() << std::endl; + std::cout << "Faces in tri2: " << tri2.number_of_hyperbolic_faces() << std::endl; + + assert(tri1.is_valid()); + assert(tri2.is_valid()); + + std::cout << " -------- SUCCESS --------" << std::endl; + + + return 0; +} \ No newline at end of file