35 #include "DGtal/base/Common.h"
36 #include "DGtal/base/BasicFunctors.h"
37 #include "DGtal/base/CConstBidirectionalRange.h"
38 #include "DGtal/base/ConstRangeAdapter.h"
40 #include "DGtal/topology/KhalimskySpaceND.h"
41 #include "DGtal/topology/SCellsFunctors.h"
42 #include "DGtal/kernel/BasicPointFunctors.h"
47 using namespace DGtal;
54 template <
typename Range>
55 bool testRange(
const Range &aRange)
62 std::vector<Value> v1,v2,v3,v4;
66 typename Range::ConstIterator i = aRange.
begin();
67 typename Range::ConstIterator end = aRange.
end();
68 for ( ; i != end; ++i) {
76 typename Range::ConstReverseIterator i = aRange.rbegin();
77 typename Range::ConstReverseIterator end = aRange.rend();
78 for ( ; i != end; ++i) {
86 typename Range::ConstCirculator c = aRange.c();
87 typename Range::ConstCirculator cend = aRange.c();
101 trace.
info() <<
"Reverse Circulator" << endl;
102 typename Range::ConstReverseCirculator c = aRange.rc();
103 typename Range::ConstReverseCirculator cend = aRange.rc();
116 return ( std::equal(v1.begin(),v1.end(),v3.begin())
117 && std::equal(v2.begin(),v2.end(),v4.begin())
118 && std::equal(v1.begin(),v1.end(),v2.rbegin())
119 && std::equal(v3.begin(),v3.end(),v4.rbegin()) );
123 template <
typename Range>
124 void testRangeConceptChecking()
133 int main(
int argc,
char** argv )
137 for (
int i = 0; i < argc; ++i )
144 std::back_insert_iterator<std::vector<int> > ito(v);
145 for (
int i = 1; i < n; ++i)
150 SimpleRange r1(v.begin(), v.end(), df);
154 typedef ConstRangeAdapter<std::vector<int>::iterator,
Thresholder<int>,
bool > BoolRange;
155 Thresholder<int> t(n/2);
156 BoolRange r2(v.begin(), v.end(), t);
160 typedef K::Point Point3;
163 v3.push_back(ks.sCell(Point3(1,1,0)));
164 v3.push_back(ks.sCell(Point3(2,1,1)));
165 v3.push_back(ks.sCell(Point3(3,1,2)));
169 typedef S::Point Point2;
176 PointRange r3(v3.begin(), v3.end(), c);
179 testRangeConceptChecking<SimpleRange>();
180 testRangeConceptChecking<BoolRange>();
181 testRangeConceptChecking<PointRange>();
184 bool res = testRange(r1)
188 trace.
emphase() << ( res ?
"Passed." :
"Error." ) << endl;