DGtal  1.2.0
testPointPredicateConcepts.cpp
Go to the documentation of this file.
1 
31 #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
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  using IntPredicate = std::function<bool(int)>;
100  typedef ImageSelector<Z3i::Domain, float>::Type FloatImage;
101  using FloatPredicate = std::function<bool(float)>;
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="")
std::ostream & emphase()
std::ostream & info()
double endBlock()
Aim: Gathers several functions useful for concept checks.
functors namespace gathers all DGtal functors.
DGtal is the top-level namespace which contains all DGtal functions and types.
Trace trace
Definition: Common.h:154
Aim: Defines a predicate on a point.
Aim: The predicate returns true when the given binary functor returns true for the two PointPredicate...
Aim: The predicate returns true when the point given as argument equals the reference point given at ...
Aim: The predicate that returns always false.
Aim: The predicate returns true when the point is below (or equal) the given upper bound.
Aim: The predicate returns true when the point is above (or equal) the given lower bound.
Aim: The predicate returns true when the point predicate given at construction return false....
Aim: The predicate returns true when the predicate returns true for the value assigned to a given poi...
Aim: The predicate that returns always true.
MyPointD Point
Definition: testClone2.cpp:383
int main(int argc, char **argv)
bool testPointPredicateConcepts()