61 copy(itb,ite,ostream_iterator<int>(
trace.info(),
" "));
62 trace.info() <<
" => ";
74 copy(v.begin(),v.end(),ostream_iterator<int>(
trace.info(),
" "));
77 trace.info() <<
" ( == ";
78 copy(groundTruth.begin(),groundTruth.end(),ostream_iterator<int>(
trace.info(),
" "));
79 trace.info() <<
")" << std::endl;
81 return equal( v.begin(),v.end(),groundTruth.begin() );
154 ASSERT( cont.size() >= 1 );
155 unsigned int nbok = 0;
158 trace.beginBlock (
"Operators of bidirectional circulator" );
159 typedef typename Container::const_iterator I;
171 trace.info() <<
"(" << nbok <<
"/" << nb <<
") " << std::endl;
175 if ( (circ1 == circ2) && (circ1 == res) && (circ2 == res) )
178 trace.info() <<
"(" << nbok <<
"/" << nb <<
") " << std::endl;
193 ASSERT( cont.size() == 5 );
195 unsigned int nbok = 0;
198 trace.beginBlock (
"Operators of random access circulator" );
199 typedef typename Container::const_iterator I;
205 trace.info() <<
"arithmetic operators" << std::endl;
207 if ( (circ2) == (circ1+4) )
210 trace.info() <<
"(" << nbok <<
"/" << nb <<
") " << std::endl;
214 if ( circ1 == circ2 )
217 trace.info() <<
"(" << nbok <<
"/" << nb <<
") " << std::endl;
219 if ( (circ1+3) == (3+circ1) )
222 trace.info() <<
"(" << nbok <<
"/" << nb <<
") " << std::endl;
225 if ( (circ1+2) == circ2 )
228 trace.info() <<
"(" << nbok <<
"/" << nb <<
") " << std::endl;
230 if ( ((circ1-circ2) + (circ2-circ1)) == (cont.end()-cont.begin()) )
233 trace.info() <<
"(" << nbok <<
"/" << nb <<
") " << std::endl;
235 trace.info() <<
"comparison operators" << std::endl;
236 if ( (circ1 < circ2) && (circ1 <= circ2)
237 && (circ2 < circ1) && (circ2 <= circ1) )
240 trace.info() <<
"(" << nbok <<
"/" << nb <<
") " << std::endl;
242 if ( !( (circ1 > circ2) && (circ1 >= circ2)
243 && (circ2 > circ1) && (circ2 >= circ1) ) )
246 trace.info() <<
"(" << nbok <<
"/" << nb <<
") " << std::endl;
256int main(
int argc,
char** argv )
258 trace.beginBlock (
"Testing class Circulator" );
259 trace.info() <<
"Args:";
260 for (
int i = 0; i < argc; ++i )
261 trace.info() <<
" " << argv[ i ];
262 trace.info() << endl;
286 trace.beginBlock (
"Iteration" );
294 trace.beginBlock (
"Comparison" );
295 trace.info() <<
"(const / not const)" << endl;
299 res = res && (c1 == c2) && (c1 == c3);
301 trace.info() <<
"(reverse_iterator<Circulator> / Circulator<reverse_iterator>)" << endl;
302 boost::reverse_iterator<Circulator<vector<int>::iterator> > rc1( c1 );
303 Circulator <vector<int>::reverse_iterator> c4( v.rend(), v.rbegin(), v.rend() );
304 res = res && (rc1.base().base() == c4.
base().base());
305 trace.info() <<
"first element: (" << *--rc1 <<
" == " << *--c4 <<
")" << endl;
306 res = res && ((*rc1) == (*c4));
309 std::forward_list<int> fl;
331 trace.emphase() << ( res ?
"Passed." :
"Error." ) << endl;