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" )
77 SECTION(
"Testing constant forward iterators from a point" )
88 SECTION(
"Testing mutable forward iterators" )
94 for ( Range::Iterator it = range.begin(), it_end = range.end(); it != it_end; ++it )
109 SECTION(
"Testing mutable forward iterators from a point" )
115 for ( Range::Iterator it = range.begin(
aPoint), it_end = range.end(); it != it_end; ++it )
130 SECTION(
"Testing constant reverse iterators" )
134 REQUIRE( std::equal(range.rbegin(), range.rend(),
refImage.rbegin()) );
141 SECTION(
"Testing constant reverse iterators from a point" )
152 SECTION(
"Testing mutable reverse iterators" )
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" )
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()) );
211 SECTION(
"Testing forward output iterators from a point" )
240 REQUIRE( std::equal(range.rbegin(), range.rend(),
refImage.rbegin()) );
243 SECTION(
"Testing reverse output iterators from a point" )
256 REQUIRE( std::equal(range.rbegin(), range.rend(),
refImage.rbegin()) );
259 SECTION(
"Testing constant forward circulators" )
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" )
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" )
372 for ( Range::Circulator it = range.c();
cnt <= 2*
domain.size(); ++it )
387 SECTION(
"Testing mutable circulators in backward way" )
392 for ( Range::Circulator it = --range.c();
cnt <= 2*
domain.size(); --it )
407 SECTION(
"Testing mutable reverse circulators in forward way" )
412 for ( Range::ReverseCirculator it = range.rc();
cnt <= 2*
domain.size(); ++it )
427 SECTION(
"Testing mutable reverse circulators in backward way" )
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'.
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))