// begin/end
{
typename OrdList::iterator it = l.begin();
+ typename OrdList::const_iterator cit = l.cbegin();
CPPUNIT_ASSERT( it != l.end() );
+ CPPUNIT_ASSERT( it != l.cend() );
+ CPPUNIT_ASSERT( cit != l.end() );
+ CPPUNIT_ASSERT( cit != l.cend() );
+ CPPUNIT_ASSERT( cit == it );
+
CPPUNIT_ASSERT( it->nKey == v2.nKey );
CPPUNIT_ASSERT( it->nVal == v2.nVal );
CPPUNIT_ASSERT( ++it != l.end() );
static int const nLimit = 20;
typename OrdList::value_type arrItem[nLimit];
-
{
int a[nLimit];
for (int i = 0; i < nLimit; ++i)
CPPUNIT_ASSERT( l.insert( arrItem[i] ) );
for ( int i=0; i < nLimit; ++i ) {
- CPPUNIT_ASSERT( l.get( gp, arrItem[i].nKey ));
+ gp = l.get( arrItem[i].nKey );
+ CPPUNIT_ASSERT_EX( gp, "i=" << i );
CPPUNIT_ASSERT( !gp.empty());
- CPPUNIT_ASSERT( gp->nKey == arrItem[i].nKey );
- CPPUNIT_ASSERT( gp->nVal == arrItem[i].nVal );
- gp.release();
+ CPPUNIT_CHECK( gp->nKey == arrItem[i].nKey );
+ CPPUNIT_CHECK( gp->nVal == arrItem[i].nVal );
- CPPUNIT_ASSERT( l.extract( gp, arrItem[i].nKey ));
+ gp = l.extract( arrItem[i].nKey );
+ CPPUNIT_ASSERT_EX( gp, "i=" << i );
CPPUNIT_ASSERT( !gp.empty());
- CPPUNIT_ASSERT( gp->nKey == arrItem[i].nKey );
- CPPUNIT_ASSERT( gp->nVal == arrItem[i].nVal );
- gp.release();
-
- CPPUNIT_ASSERT( !l.get( gp, arrItem[i].nKey ));
- CPPUNIT_ASSERT( gp.empty());
- CPPUNIT_ASSERT( !l.extract( gp, arrItem[i].nKey ));
- CPPUNIT_ASSERT( gp.empty());
+ CPPUNIT_CHECK( gp->nKey == arrItem[i].nKey );
+ CPPUNIT_CHECK( gp->nVal == arrItem[i].nVal );
+
+ gp = l.get( arrItem[i].nKey );
+ CPPUNIT_CHECK( !gp );
+ CPPUNIT_CHECK( gp.empty());
+ CPPUNIT_CHECK( !l.extract( arrItem[i].nKey ));
+ CPPUNIT_CHECK( gp.empty());
}
CPPUNIT_ASSERT( l.empty() );
- CPPUNIT_ASSERT( !l.get( gp, nLimit/2 ));
+ CPPUNIT_ASSERT( !l.get( nLimit/2 ));
CPPUNIT_ASSERT( gp.empty());
- CPPUNIT_ASSERT( !l.extract( gp, nLimit/2 ));
+ CPPUNIT_ASSERT( !l.extract( nLimit/2 ));
CPPUNIT_ASSERT( gp.empty());
// Apply retired pointer
for ( int i=0; i < nLimit; ++i ) {
other_item itm( arrItem[i].nKey );
- CPPUNIT_ASSERT( l.get_with( gp, itm, other_less() ));
+ gp = l.get_with( itm, other_less() );
+ CPPUNIT_ASSERT_EX( gp, "i=" << i );
CPPUNIT_ASSERT( !gp.empty());
- CPPUNIT_ASSERT( gp->nKey == arrItem[i].nKey );
- CPPUNIT_ASSERT( gp->nVal == arrItem[i].nVal );
- gp.release();
+ CPPUNIT_CHECK( gp->nKey == arrItem[i].nKey );
+ CPPUNIT_CHECK( gp->nVal == arrItem[i].nVal );
- CPPUNIT_ASSERT( l.extract_with( gp, itm, other_less() ));
+ gp = l.extract_with( itm, other_less() );
+ CPPUNIT_ASSERT_EX( gp, "i=" << i );
CPPUNIT_ASSERT( !gp.empty());
- CPPUNIT_ASSERT( gp->nKey == arrItem[i].nKey );
- CPPUNIT_ASSERT( gp->nVal == arrItem[i].nVal );
- gp.release();
-
- CPPUNIT_ASSERT( !l.get_with( gp, itm, other_less() ));
- CPPUNIT_ASSERT( gp.empty());
- CPPUNIT_ASSERT( !l.extract_with( gp, itm, other_less() ));
- CPPUNIT_ASSERT( gp.empty());
+ CPPUNIT_CHECK( gp->nKey == arrItem[i].nKey );
+ CPPUNIT_CHECK( gp->nVal == arrItem[i].nVal );
+
+ gp = l.get_with( itm, other_less() );
+ CPPUNIT_CHECK( !gp );
+ CPPUNIT_CHECK( gp.empty());
+ CPPUNIT_CHECK( !l.extract_with( itm, other_less() ));
+ CPPUNIT_CHECK( gp.empty());
}
CPPUNIT_ASSERT( l.empty() );
- CPPUNIT_ASSERT( !l.get_with( gp, other_item(nLimit/2), other_less() ));
+ CPPUNIT_ASSERT( !l.get_with( other_item(nLimit/2), other_less() ));
CPPUNIT_ASSERT( gp.empty());
- CPPUNIT_ASSERT( !l.extract_with( gp, other_item(nLimit/2), other_less() ));
+ CPPUNIT_ASSERT( !l.extract_with( other_item(nLimit/2), other_less() ));
CPPUNIT_ASSERT( gp.empty());
// Apply retired pointer
for ( int i = 0; i < nLimit; ++i ) {
{
- rcu_lock lock;
- value_type * pGet = l.get( a[i] );
- CPPUNIT_ASSERT( pGet != nullptr );
- CPPUNIT_CHECK( pGet->nKey == a[i] );
- CPPUNIT_CHECK( pGet->nVal == a[i] * 2 );
-
- CPPUNIT_ASSERT( l.extract( ep, a[i] ));
+ {
+ rcu_lock lock;
+ value_type * pGet = l.get( a[i] );
+ CPPUNIT_ASSERT( pGet != nullptr );
+ CPPUNIT_CHECK( pGet->nKey == a[i] );
+ CPPUNIT_CHECK( pGet->nVal == a[i] * 2 );
+ }
+
+ ep = l.extract( a[i] );
+ CPPUNIT_ASSERT( ep );
CPPUNIT_ASSERT( !ep.empty() );
CPPUNIT_CHECK( ep->nKey == a[i] );
CPPUNIT_CHECK( (*ep).nVal == a[i] * 2 );
{
rcu_lock lock;
CPPUNIT_CHECK( l.get( a[i] ) == nullptr );
- CPPUNIT_CHECK( !l.extract( ep, a[i] ));
+ CPPUNIT_CHECK( !l.extract( a[i] ));
CPPUNIT_CHECK( ep.empty() );
}
}
{
rcu_lock lock;
CPPUNIT_CHECK( l.get( a[0] ) == nullptr );
- CPPUNIT_CHECK( !l.extract( ep, a[0] ) );
+ ep = l.extract( a[0] );
+ CPPUNIT_CHECK( !ep );
CPPUNIT_CHECK( ep.empty() );
}
// Apply retired pointer
for ( int i = 0; i < nLimit; ++i ) {
other_item itm( a[i] );
{
- rcu_lock lock;
- value_type * pGet = l.get_with( itm, other_less() );
- CPPUNIT_ASSERT( pGet != nullptr );
- CPPUNIT_CHECK( pGet->nKey == a[i] );
- CPPUNIT_CHECK( pGet->nVal == a[i] * 2 );
-
- CPPUNIT_ASSERT( l.extract_with( ep, itm, other_less() ));
+ {
+ rcu_lock lock;
+ value_type * pGet = l.get_with( itm, other_less() );
+ CPPUNIT_ASSERT( pGet != nullptr );
+ CPPUNIT_CHECK( pGet->nKey == a[i] );
+ CPPUNIT_CHECK( pGet->nVal == a[i] * 2 );
+ }
+
+ ep = l.extract_with( itm, other_less() );
+ CPPUNIT_ASSERT( ep );
CPPUNIT_ASSERT( !ep.empty() );
CPPUNIT_CHECK( ep->nKey == a[i] );
CPPUNIT_CHECK( ep->nVal == a[i] * 2 );
{
rcu_lock lock;
CPPUNIT_CHECK( l.get_with( itm, other_less() ) == nullptr );
- CPPUNIT_CHECK( !l.extract_with( ep, itm, other_less() ));
+ ep = l.extract_with( itm, other_less() );
+ CPPUNIT_CHECK( !ep );
CPPUNIT_CHECK( ep.empty() );
}
}
{
rcu_lock lock;
CPPUNIT_CHECK( l.get_with( other_item( 0 ), other_less() ) == nullptr );
- CPPUNIT_CHECK( !l.extract_with( ep, other_item(0), other_less() ));
+ CPPUNIT_CHECK( !l.extract_with( other_item(0), other_less() ));
CPPUNIT_CHECK( ep.empty() );
}
// Apply retired pointer
{
typename OrdList::iterator it = l.begin();
+ typename OrdList::const_iterator cit = l.cbegin();
CPPUNIT_ASSERT( it != l.end() );
+ CPPUNIT_ASSERT( it != l.cend() );
+ CPPUNIT_ASSERT( cit != l.end() );
+ CPPUNIT_ASSERT( cit != l.cend() );
+ CPPUNIT_ASSERT( cit == it );
+
CPPUNIT_ASSERT( it->nKey == v2.nKey );
CPPUNIT_ASSERT( it->nVal == v2.nVal );
CPPUNIT_ASSERT( ++it != l.end() );