Skip to content

Commit

Permalink
Cover self-assignment (nonstd-lite project issue 29, thanks to OpenCp…
Browse files Browse the repository at this point in the history
  • Loading branch information
martinmoene committed Feb 16, 2019
1 parent d5f3dc3 commit be88bcd
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions test/value_ptr.t.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,24 @@ CASE( "value_ptr: Allows to copy-assign from/to engaged and disengaged value_ptr

EXPECT( !d1 );
EXPECT( d1.get() == d2.get() );
}
SECTION( "a self-assigned disengaged value_ptr remains empty" )
{
int * pd1 = d1.get();

d1 = d1;

EXPECT( !d1 );
EXPECT( d1.get() == pd1 );
}
SECTION( "a self-assigned engaged value_ptr remains unchanged" )
{
int * pe1 = e1.get();

e1 = e1;

EXPECT( e1 );
EXPECT( e1.get() == pe1 );
}}
}

Expand Down Expand Up @@ -402,6 +420,24 @@ CASE( "value_ptr: Allows to move-assign from/to engaged and disengaged value_ptr

EXPECT( !d1 );
// EXPECT( d1.get() == d2.get() );
}
SECTION( "a self-assigned disengaged value_ptr remains empty" )
{
int * pd1 = d1.get();

d1 = std::move( d1 );

EXPECT( !d1 );
EXPECT( d1.get() == pd1 );
}
SECTION( "a self-assigned engaged value_ptr remains unchanged" )
{
int * pe1 = e1.get();

e1 = std::move( e1 );

EXPECT( e1 );
EXPECT( e1.get() == pe1 );
}}
#else
EXPECT( !!"value_ptr: move-assignment is not available (no C++11)" );
Expand Down

0 comments on commit be88bcd

Please sign in to comment.