add tests

This commit is contained in:
Guillaume Damiand 2011-11-19 07:53:26 +00:00
parent 5f1a01118f
commit c19dae7287
3 changed files with 110 additions and 26 deletions

View File

@ -26,23 +26,9 @@
#include <CGAL/Linear_cell_complex_min_items.h>
#include <CGAL/Linear_cell_complex_traits.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Cartesian_d.h>
#include <CGAL/predicates_d.h>
namespace CGAL {
template <unsigned int d>
struct Default_template_argument
{ typedef Linear_cell_complex_traits<d,Cartesian_d<double> > type; };
template <>
struct Default_template_argument<2>
{ typedef Linear_cell_complex_traits
<2,Exact_predicates_inexact_constructions_kernel> type; };
template <>
struct Default_template_argument<3>
{ typedef Linear_cell_complex_traits
<3,Exact_predicates_inexact_constructions_kernel> type; };
/** @file Linear_cell_complex.h
* Definition of a linear cell complex, i.e. a combinatorial map with points
* associated to all vertices.
@ -53,7 +39,7 @@ namespace CGAL {
* an nD combinatorial map with point associated to each vertex.
*/
template < unsigned int d_, unsigned int ambient_dim = d_,
class Traits_ = typename Default_template_argument<d_>::type,
class Traits_ = Linear_cell_complex_traits<d_>,
class Items_ = Linear_cell_complex_min_items<d_>,
class Alloc_ = CGAL_ALLOCATOR(int),
template<unsigned int,class,class,class>

View File

@ -20,15 +20,27 @@
#ifndef CGAL_LINEAR_CELL_COMPLEX_TRAITS_H
#define CGAL_LINEAR_CELL_COMPLEX_TRAITS_H 1
#include <CGAL/Cartesian.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Cartesian_d.h>
#include <CGAL/predicates_d.h>
namespace CGAL {
template <unsigned int d>
struct LCC_default_kernel
{ typedef Cartesian_d<double> type; };
template <>
struct LCC_default_kernel<2>
{ typedef Exact_predicates_inexact_constructions_kernel type; };
template <>
struct LCC_default_kernel<3>
{ typedef Exact_predicates_inexact_constructions_kernel type; };
/** Trait class for Linear_cell_complex class.
* dD version (for the moment there is only one dD kernel in CGAL).
*/
template <unsigned int d_, class Kernel>
template <unsigned int d_,
class Kernel=typename LCC_default_kernel<d_>::type >
struct Linear_cell_complex_traits : public Kernel
{
static const unsigned int ambient_dimension = d_;

View File

@ -2,26 +2,112 @@
#include "Linear_cell_complex_3_test.h"
#include "Linear_cell_complex_4_test.h"
struct Sum_functor
{
template<class Cell_attribute>
void operator()(Cell_attribute& ca1,Cell_attribute& ca2)
{ ca1.info()=ca1.info()+ca2.info(); }
};
struct Divide_by_two_functor
{
template<class Cell_attribute>
void operator()(Cell_attribute& ca1,Cell_attribute& ca2)
{
ca1.info()=(ca1.info()/2);
ca2.info()=(ca1.info());
}
};
struct Myitems_2
{
template <class LCC>
struct Dart_wrapper
{
typedef CGAL::Dart<2, LCC> Dart;
typedef CGAL::Cell_attribute_with_point<LCC,int,CGAL::Tag_true,Sum_functor,
Divide_by_two_functor> myattrib;
typedef CGAL::cpp0x::tuple<myattrib, myattrib, myattrib>
Attributes;
};
};
struct Myitems_3
{
template <class LCC>
struct Dart_wrapper
{
typedef CGAL::Dart<3, LCC> Dart;
typedef CGAL::Cell_attribute_with_point<LCC,int,CGAL::Tag_true,Sum_functor,
Divide_by_two_functor> myattrib;
typedef CGAL::cpp0x::tuple<myattrib, myattrib, myattrib, myattrib>
Attributes;
};
};
struct Myitems_4
{
template <class LCC>
struct Dart_wrapper
{
typedef CGAL::Dart<4, LCC> Dart;
typedef CGAL::Cell_attribute_with_point<LCC,int,CGAL::Tag_true,Sum_functor,
Divide_by_two_functor> myattrib;
typedef CGAL::cpp0x::tuple<myattrib, myattrib, myattrib, myattrib,myattrib>
Attributes;
};
};
int main()
{
typedef CGAL::Linear_cell_complex<2> LCC1;
if ( !test_LCC_2<LCC1>() )
typedef CGAL::Linear_cell_complex<2> LCC2;
if ( !test_LCC_2<LCC2>() )
{
std::cout<<"ERROR during Test_LCC_2<LCC1>."<<std::endl;
std::cout<<"ERROR during Test_LCC_2<LCC2>."<<std::endl;
return EXIT_FAILURE;
}
typedef CGAL::Linear_cell_complex<3> LCC2;
if ( !test_LCC_3<LCC2>() )
typedef CGAL::Linear_cell_complex<3> LCC3;
if ( !test_LCC_3<LCC3>() )
{
std::cout<<"ERROR during Test_LCC_3<LCC2>."<<std::endl;
std::cout<<"ERROR during Test_LCC_3<LCC3>."<<std::endl;
return EXIT_FAILURE;
}
typedef CGAL::Linear_cell_complex<4> LCC3;
if ( !test_LCC_4<LCC3>() )
typedef CGAL::Linear_cell_complex<4> LCC4;
if ( !test_LCC_4<LCC4>() )
{
std::cout<<"ERROR during Test_LCC_4<LCC3>."<<std::endl;
std::cout<<"ERROR during Test_LCC_4<LCC4>."<<std::endl;
return EXIT_FAILURE;
}
typedef CGAL::Linear_cell_complex<2,2,
CGAL::Linear_cell_complex_traits<2>,
Myitems_2> LCC2b;
if ( !test_LCC_2<LCC2b>() )
{
std::cout<<"ERROR during Test_LCC_2<LCC2b>."<<std::endl;
return EXIT_FAILURE;
}
typedef CGAL::Linear_cell_complex<3,3,
CGAL::Linear_cell_complex_traits<3>,
Myitems_3> LCC3b;
if ( !test_LCC_3<LCC3b>() )
{
std::cout<<"ERROR during Test_LCC_3<LCC3b>."<<std::endl;
return EXIT_FAILURE;
}
typedef CGAL::Linear_cell_complex<4,4,
CGAL::Linear_cell_complex_traits<4>,
Myitems_4> LCC4b;
if ( !test_LCC_4<LCC4b>() )
{
std::cout<<"ERROR during Test_LCC_4<LCC4b>."<<std::endl;
return EXIT_FAILURE;
}