DGtal  0.9.2
testPointPredicateConcepts.cpp
1 
30 #include <iostream>
32 #include <functional>
33 #include "DGtal/base/Common.h"
34 #include "DGtal/helpers/StdDefs.h"
35 #include "DGtal/kernel/BasicPointPredicates.h"
36 #include "DGtal/images/ImageSelector.h"
38 
39 using namespace std;
40 using namespace DGtal;
41 using namespace DGtal::functors;
42 using namespace DGtal::concepts;
43 
45 // Functions for testing class PointPredicateConcepts.
47 
51 template <typename PointFunctor1,typename Predicate1, typename PointFunctor2, typename Predicate2>
52 bool
53 testPointPredicateConcepts()
54 {
55  // PointFunctorPredicate
57  BOOST_CONCEPT_ASSERT (( concepts::CPointPredicate< PointPredicate1 > ));
59  BOOST_CONCEPT_ASSERT (( concepts::CPointPredicate< PointPredicate2 > ));
60 
61  // Binary PointPredicate
62  typedef std::logical_and<bool> BinaryFunctor;
64 
65  // NotPointPredicate
68 
69  typedef typename PointFunctor1::Point Point;
70  // EqualPointPredicate
71  BOOST_CONCEPT_ASSERT(( concepts::CPointPredicate< EqualPointPredicate<Point> > ));
72  // IsWithinPointPredicate
73  BOOST_CONCEPT_ASSERT(( concepts::CPointPredicate< IsWithinPointPredicate<Point> > ));
74  // IsUpperPointPredicate
75  BOOST_CONCEPT_ASSERT(( concepts::CPointPredicate< IsUpperPointPredicate<Point> > ));
76  // IsLowerPointPredicate
77  BOOST_CONCEPT_ASSERT(( concepts::CPointPredicate< IsLowerPointPredicate<Point> > ));
78  // TruePointPredicate
79  BOOST_CONCEPT_ASSERT(( concepts::CPointPredicate< TruePointPredicate<Point> > ));
80  // FalsePointPredicate
81  BOOST_CONCEPT_ASSERT(( concepts::CPointPredicate< FalsePointPredicate<Point> > ));
82 
83  return true;
84 }
85 
87 // Standard services - public :
88 
89 int main( int argc, char** argv )
90 {
91  trace.beginBlock ( "Testing PointPredicate Concepts" );
92  trace.info() << "Args:";
93  for ( int i = 0; i < argc; ++i )
94  trace.info() << " " << argv[ i ];
95  trace.info() << endl;
96 
97  bool res = true;
99  typedef std::binder2nd< std::less<int> > IntPredicate;
100  typedef ImageSelector<Z3i::Domain, float>::Type FloatImage;
101  typedef std::binder2nd< std::greater<float> > FloatPredicate;
102  res &= testPointPredicateConcepts<IntImage, IntPredicate, FloatImage, FloatPredicate>();
103 
104  trace.emphase() << ( res ? "Passed." : "Error." ) << endl;
105  trace.endBlock();
106  return res ? 0 : 1;
107 }
108 // //
void beginBlock(const std::string &keyword="")
Aim: The predicate returns true when the point predicate given at construction return false...
Trace trace
Definition: Common.h:130
Aim: The predicate returns true when the point given as argument equals the reference point given at ...
STL namespace.
double endBlock()
Aim: Gathers several functions useful for concept checks.
functors namespace gathers all DGtal functors.
Aim: The predicate returns true when the point is above (or equal) the given lower bound...
Aim: The predicate that returns always false.
Aim: Defines a predicate on a point.
std::ostream & emphase()
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & info()
Aim: The predicate returns true when the point is below (or equal) the given upper bound...
Aim: The predicate returns true when the given binary functor returns true for the two PointPredicate...
Aim: The predicate that returns always true.
Aim: The predicate returns true when the predicate returns true for the value assigned to a given poi...