From b823fed8df922e6c2fb6d4dfd06c413f65669540 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 3 Feb 2016 14:10:16 +0100 Subject: [PATCH] Split testcase to see if it avoids an ICE for VC++ --- Nef_3/test/Nef_3/test_nef_3_io_Cartesian.cpp | 59 ++++++++++++++++++ .../Nef_3/test_nef_3_io_Cartesian_Lazy.cpp | 62 +++++++++++++++++++ Nef_3/test/Nef_3/test_nef_3_io_EPEC.cpp | 52 ++++++++++++++++ .../test/Nef_3/test_nef_3_io_Homogeneous.cpp | 60 ++++++++++++++++++ ...cpp => test_nef_3_io_Homogenoeus_Lazy.cpp} | 24 ------- 5 files changed, 233 insertions(+), 24 deletions(-) create mode 100644 Nef_3/test/Nef_3/test_nef_3_io_Cartesian.cpp create mode 100644 Nef_3/test/Nef_3/test_nef_3_io_Cartesian_Lazy.cpp create mode 100644 Nef_3/test/Nef_3/test_nef_3_io_EPEC.cpp create mode 100644 Nef_3/test/Nef_3/test_nef_3_io_Homogeneous.cpp rename Nef_3/test/Nef_3/{test_nef_3_io.cpp => test_nef_3_io_Homogenoeus_Lazy.cpp} (58%) diff --git a/Nef_3/test/Nef_3/test_nef_3_io_Cartesian.cpp b/Nef_3/test/Nef_3/test_nef_3_io_Cartesian.cpp new file mode 100644 index 00000000000..7c887f452cb --- /dev/null +++ b/Nef_3/test/Nef_3/test_nef_3_io_Cartesian.cpp @@ -0,0 +1,59 @@ +#include +#include + +#include +#include +#include + +#include + +typedef CGAL::internal::Exact_field_selector::Type FT; +typedef CGAL::Fraction_traits::Numerator_type RT; +typedef CGAL::Cartesian< FT > C_FT; +typedef CGAL::Simple_cartesian< FT > SC_FT; + + +template +void test_write_read() +{ + typedef CGAL::Nef_polyhedron_3< Kernel > Nef_polyhedron; + typedef CGAL::Polyhedron_3< Kernel > Polyhedron; + typedef typename Kernel::Point_3 Point; + + typename Kernel::RT n( std::string("6369051672525773")); + typename Kernel::RT d( std::string("4503599627370496")); + + Point p(n, 0, 0, d); + Point q(0, n, 0, d); + Point r(0, 0, n, d); + Point s(0, 0, 0, 1); + + std::cout << " build...\n"; + Polyhedron P; + P.make_tetrahedron( p, q, r, s); + Nef_polyhedron nef_1( P ); + + std::cout << " write...\n"; + std::ofstream out ("temp.nef"); + out << nef_1; + out.close(); + + std::cout << " read...\n"; + std::ifstream in ("temp.nef"); + Nef_polyhedron nef_2; + in >> nef_2; + in.close(); + + std::cout << " check...\n"; + assert( nef_1 == nef_2); +} + +int main() +{ + std::cout << "Testing Cartesian< FT >\n"; + test_write_read(); + std::cout << "Testing Simple_cartesian< FT >\n"; + test_write_read(); + + return 0; +} diff --git a/Nef_3/test/Nef_3/test_nef_3_io_Cartesian_Lazy.cpp b/Nef_3/test/Nef_3/test_nef_3_io_Cartesian_Lazy.cpp new file mode 100644 index 00000000000..cd8d18b9a02 --- /dev/null +++ b/Nef_3/test/Nef_3/test_nef_3_io_Cartesian_Lazy.cpp @@ -0,0 +1,62 @@ +#include +#include +#include + +#include +#include +#include + +#include + +typedef CGAL::internal::Exact_field_selector::Type FT; +typedef CGAL::Fraction_traits::Numerator_type RT; +typedef CGAL::Lazy_exact_nt < FT > Lazy_FT; +typedef CGAL::Lazy_exact_nt < RT > Lazy_RT; +typedef CGAL::Cartesian< Lazy_FT > C_Lazy_FT; +typedef CGAL::Simple_cartesian< Lazy_FT > SC_Lazy_FT; + + +template +void test_write_read() +{ + typedef CGAL::Nef_polyhedron_3< Kernel > Nef_polyhedron; + typedef CGAL::Polyhedron_3< Kernel > Polyhedron; + typedef typename Kernel::Point_3 Point; + + typename Kernel::RT n( std::string("6369051672525773")); + typename Kernel::RT d( std::string("4503599627370496")); + + Point p(n, 0, 0, d); + Point q(0, n, 0, d); + Point r(0, 0, n, d); + Point s(0, 0, 0, 1); + + std::cout << " build...\n"; + Polyhedron P; + P.make_tetrahedron( p, q, r, s); + Nef_polyhedron nef_1( P ); + + std::cout << " write...\n"; + std::ofstream out ("temp.nef"); + out << nef_1; + out.close(); + + std::cout << " read...\n"; + std::ifstream in ("temp.nef"); + Nef_polyhedron nef_2; + in >> nef_2; + in.close(); + + std::cout << " check...\n"; + assert( nef_1 == nef_2); +} + +int main() +{ + std::cout << "Testing Cartesian< Lazy_exact_nt >\n"; + test_write_read(); + std::cout << "Testing Simple_cartesian< Lazy_exact_nt >\n"; + test_write_read(); + + return 0; +} diff --git a/Nef_3/test/Nef_3/test_nef_3_io_EPEC.cpp b/Nef_3/test/Nef_3/test_nef_3_io_EPEC.cpp new file mode 100644 index 00000000000..03e0ff91ee5 --- /dev/null +++ b/Nef_3/test/Nef_3/test_nef_3_io_EPEC.cpp @@ -0,0 +1,52 @@ +#include + +#include +#include +#include + +#include + +typedef CGAL::Exact_predicates_exact_constructions_kernel EPEC; + +template +void test_write_read() +{ + typedef CGAL::Nef_polyhedron_3< Kernel > Nef_polyhedron; + typedef CGAL::Polyhedron_3< Kernel > Polyhedron; + typedef typename Kernel::Point_3 Point; + + typename Kernel::RT n( std::string("6369051672525773")); + typename Kernel::RT d( std::string("4503599627370496")); + + Point p(n, 0, 0, d); + Point q(0, n, 0, d); + Point r(0, 0, n, d); + Point s(0, 0, 0, 1); + + std::cout << " build...\n"; + Polyhedron P; + P.make_tetrahedron( p, q, r, s); + Nef_polyhedron nef_1( P ); + + std::cout << " write...\n"; + std::ofstream out ("temp.nef"); + out << nef_1; + out.close(); + + std::cout << " read...\n"; + std::ifstream in ("temp.nef"); + Nef_polyhedron nef_2; + in >> nef_2; + in.close(); + + std::cout << " check...\n"; + assert( nef_1 == nef_2); +} + +int main() +{ + std::cout << "Testing Exact_predicates_exact_constructions_kernel\n"; + test_write_read(); + + return 0; +} diff --git a/Nef_3/test/Nef_3/test_nef_3_io_Homogeneous.cpp b/Nef_3/test/Nef_3/test_nef_3_io_Homogeneous.cpp new file mode 100644 index 00000000000..987539e7926 --- /dev/null +++ b/Nef_3/test/Nef_3/test_nef_3_io_Homogeneous.cpp @@ -0,0 +1,60 @@ +#include +#include + +#include +#include +#include + +#include + +typedef CGAL::internal::Exact_field_selector::Type FT; +typedef CGAL::Fraction_traits::Numerator_type RT; +typedef CGAL::Homogeneous< RT > H_RT; +typedef CGAL::Simple_homogeneous< RT > SH_RT; + + +template +void test_write_read() +{ + typedef CGAL::Nef_polyhedron_3< Kernel > Nef_polyhedron; + typedef CGAL::Polyhedron_3< Kernel > Polyhedron; + typedef typename Kernel::Point_3 Point; + + typename Kernel::RT n( std::string("6369051672525773")); + typename Kernel::RT d( std::string("4503599627370496")); + + Point p(n, 0, 0, d); + Point q(0, n, 0, d); + Point r(0, 0, n, d); + Point s(0, 0, 0, 1); + + std::cout << " build...\n"; + Polyhedron P; + P.make_tetrahedron( p, q, r, s); + Nef_polyhedron nef_1( P ); + + std::cout << " write...\n"; + std::ofstream out ("temp.nef"); + out << nef_1; + out.close(); + + std::cout << " read...\n"; + std::ifstream in ("temp.nef"); + Nef_polyhedron nef_2; + in >> nef_2; + in.close(); + + std::cout << " check...\n"; + assert( nef_1 == nef_2); +} + +int main() +{ + + std::cout << "Testing Homogeneous< RT >\n"; + test_write_read(); + std::cout << "Testing Simple_homogeneous< RT >\n"; + test_write_read(); + + return 0; +} diff --git a/Nef_3/test/Nef_3/test_nef_3_io.cpp b/Nef_3/test/Nef_3/test_nef_3_io_Homogenoeus_Lazy.cpp similarity index 58% rename from Nef_3/test/Nef_3/test_nef_3_io.cpp rename to Nef_3/test/Nef_3/test_nef_3_io_Homogenoeus_Lazy.cpp index ce0fa55057c..920e3af755e 100644 --- a/Nef_3/test/Nef_3/test_nef_3_io.cpp +++ b/Nef_3/test/Nef_3/test_nef_3_io_Homogenoeus_Lazy.cpp @@ -1,8 +1,5 @@ -#include #include #include -#include -#include #include #include @@ -11,17 +8,10 @@ #include -typedef CGAL::Exact_predicates_exact_constructions_kernel EPEC; typedef CGAL::internal::Exact_field_selector::Type FT; typedef CGAL::Fraction_traits::Numerator_type RT; typedef CGAL::Lazy_exact_nt < FT > Lazy_FT; typedef CGAL::Lazy_exact_nt < RT > Lazy_RT; -typedef CGAL::Cartesian< FT > C_FT; -typedef CGAL::Simple_cartesian< FT > SC_FT; -typedef CGAL::Homogeneous< RT > H_RT; -typedef CGAL::Simple_homogeneous< RT > SH_RT; -typedef CGAL::Cartesian< Lazy_FT > C_Lazy_FT; -typedef CGAL::Simple_cartesian< Lazy_FT > SC_Lazy_FT; typedef CGAL::Homogeneous< Lazy_RT > H_Lazy_RT; typedef CGAL::Simple_homogeneous< Lazy_RT > SH_Lazy_RT; @@ -63,20 +53,6 @@ void test_write_read() int main() { - std::cout << "Testing Exact_predicates_exact_constructions_kernel\n"; - test_write_read(); - std::cout << "Testing Cartesian< FT >\n"; - test_write_read(); - std::cout << "Testing Simple_cartesian< FT >\n"; - test_write_read(); - std::cout << "Testing Homogeneous< RT >\n"; - test_write_read(); - std::cout << "Testing Simple_homogeneous< RT >\n"; - test_write_read(); - std::cout << "Testing Cartesian< Lazy_exact_nt >\n"; - test_write_read(); - std::cout << "Testing Simple_cartesian< Lazy_exact_nt >\n"; - test_write_read(); std::cout << "Testing Homogeneous< Lazy_exact_nt >\n"; test_write_read(); std::cout << "Testing Simple_homogeneous< Lazy_exact_nt >\n";