27#include "DGtalCatch.h"
29#include <DGtal/kernel/SpaceND.h>
30#include <DGtal/kernel/domains/HyperRectDomain.h>
31#include <DGtal/kernel/domains/Linearizer.h>
32#include <DGtal/images/ImageContainerBySTLVector.h>
37TEST_CASE(
"Testing SimpleRandomAccess(Const)RangeFromPoint from ImageContainerBySTLVector",
"" )
39 using namespace DGtal;
66 SECTION(
"Testing constant forward iterators" )
68 const Range range = image.range();
77 SECTION(
"Testing constant forward iterators from a point" )
79 const Range range = image.range();
88 SECTION(
"Testing mutable forward iterators" )
90 Range range = image.range();
94 for ( Range::Iterator it = range.begin(), it_end = range.end(); it != it_end; ++it )
109 SECTION(
"Testing mutable forward iterators from a point" )
111 Range range = image.range();
115 for ( Range::Iterator it = range.begin(
aPoint), it_end = range.end(); it != it_end; ++it )
130 SECTION(
"Testing constant reverse iterators" )
132 const Range range = image.range();
134 REQUIRE( std::equal(range.rbegin(), range.rend(),
refImage.rbegin()) );
141 SECTION(
"Testing constant reverse iterators from a point" )
143 const Range range = image.range();
152 SECTION(
"Testing mutable reverse iterators" )
154 Range range = image.range();
158 for ( Range::ReverseIterator it = range.rbegin(), it_end = range.rend(); it != it_end; ++it )
170 REQUIRE( std::equal(range.rbegin(), range.rend(),
refImage.rbegin()) );
173 SECTION(
"Testing mutable reverse iterators from a point" )
175 Range range = image.range();
179 for ( Range::ReverseIterator it = range.rbegin(
aPoint), it_end = range.rend(); it != it_end; ++it )
192 REQUIRE( std::equal(range.rbegin(), range.rend(),
refImage.rbegin()) );
197 Range range = image.range();
211 SECTION(
"Testing forward output iterators from a point" )
213 Range range = image.range();
229 Range range = image.range();
240 REQUIRE( std::equal(range.rbegin(), range.rend(),
refImage.rbegin()) );
243 SECTION(
"Testing reverse output iterators from a point" )
245 Range range = image.range();
256 REQUIRE( std::equal(range.rbegin(), range.rend(),
refImage.rbegin()) );
259 SECTION(
"Testing constant forward circulators" )
269 const Range range = image.range();
272 for ( Range::ConstCirculator it = range.c();
cnt <= 2*
domain.size(); ++it )
277 REQUIRE( sum == Approx(refSum) );
283 for ( Range::ConstCirculator it = range.c();
cnt <= 2*
domain.size(); --it )
288 REQUIRE( sum == Approx(refSum) );
294 for ( Range::ConstCirculator it = crange.
c();
cnt <= 2*
domain.size(); ++it )
299 REQUIRE( sum == Approx(refSum) );
305 for ( Range::ConstCirculator it = crange.
c();
cnt <= 2*
domain.size(); --it )
310 REQUIRE( sum == Approx(refSum) );
313 SECTION(
"Testing constant reverse circulators" )
323 const Range range = image.range();
326 for ( Range::ConstReverseCirculator it = range.rc();
cnt <= 2*
domain.size(); ++it )
331 REQUIRE( sum == Approx(refSum) );
337 for ( Range::ConstReverseCirculator it = range.rc();
cnt <= 2*
domain.size(); --it )
342 REQUIRE( sum == Approx(refSum) );
348 for ( Range::ConstReverseCirculator it = crange.
rc();
cnt <= 2*
domain.size(); ++it )
353 REQUIRE( sum == Approx(refSum) );
359 for ( Range::ConstReverseCirculator it = crange.
rc();
cnt <= 2*
domain.size(); --it )
364 REQUIRE( sum == Approx(refSum) );
367 SECTION(
"Testing mutable circulators in forward way" )
369 Range range = image.range();
372 for ( Range::Circulator it = range.c();
cnt <= 2*
domain.size(); ++it )
387 SECTION(
"Testing mutable circulators in backward way" )
389 Range range = image.range();
392 for ( Range::Circulator it = --range.c();
cnt <= 2*
domain.size(); --it )
407 SECTION(
"Testing mutable reverse circulators in forward way" )
409 Range range = image.range();
412 for ( Range::ReverseCirculator it = range.rc();
cnt <= 2*
domain.size(); ++it )
427 SECTION(
"Testing mutable reverse circulators in backward way" )
429 Range range = image.range();
432 for ( Range::ReverseCirculator it = --range.rc();
cnt <= 2*
domain.size(); --it )
Iterator for HyperRectDomain.
Reverse iterator for HyperRectDomain.
Aim: Parallelepidec region of a digital space, model of a 'CDomain'.
void setValue(const Point &aPoint, const Value &aValue)
std::vector< Value >::const_iterator ConstIterator
SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctorFromPoint< Self > > Range
Aim: model of CConstBidirectionalRangeFromPoint that adapts any range of elements bounded by two iter...
ConstIterator begin() const
ConstCirculator c() const
ConstReverseIterator rbegin() const
ConstIterator end() const
ConstReverseCirculator rc() const
ConstReverseIterator rend() const
DGtal is the top-level namespace which contains all DGtal functions and types.
TEST_CASE("int container traits", "[int][traits]")
Linearizer< Domain, ColMajorStorage > Linearizer
ImageContainerBySTLVector< Domain, Value > Image
Image::ConstRange ConstRange
SECTION("Testing constant forward iterators")
HyperRectDomain< Space > Domain
REQUIRE(domain.isInside(aPoint))