libstdc++: Improve tests for std::atomic_flag
The tests for clear() and test_and_set() didn't cover all cases. * testsuite/29_atomics/atomic_flag/clear/1.cc: Also test clear() when the value is currently set. * testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc: Actually check the return value. * testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc: Likewise.
This commit is contained in:
parent
17412a74c5
commit
e784f98027
3 changed files with 10 additions and 12 deletions
|
@ -25,9 +25,9 @@ int main()
|
|||
{
|
||||
std::atomic_flag f = ATOMIC_FLAG_INIT;
|
||||
|
||||
f.clear(); // set to false
|
||||
f.clear(); // set to false
|
||||
VERIFY( false == f.test_and_set() ); // return true
|
||||
VERIFY( true == f.test_and_set() ); // return true
|
||||
f.clear(); // set to false
|
||||
VERIFY( false == f.test_and_set() ); // return previous false, set to true
|
||||
VERIFY( true == f.test_and_set() ); // return true
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -19,14 +19,13 @@
|
|||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include <atomic>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace std;
|
||||
atomic_flag af = ATOMIC_FLAG_INIT;
|
||||
|
||||
if (!af.test_and_set(memory_order_acquire))
|
||||
af.clear(memory_order_release);
|
||||
|
||||
return 0;
|
||||
VERIFY( ! af.test_and_set(memory_order_acquire) );
|
||||
VERIFY( af.test_and_set(memory_order_acquire) );
|
||||
}
|
||||
|
|
|
@ -19,14 +19,13 @@
|
|||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include <atomic>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace std;
|
||||
atomic_flag af = ATOMIC_FLAG_INIT;
|
||||
|
||||
if (!af.test_and_set())
|
||||
af.clear();
|
||||
|
||||
return 0;
|
||||
VERIFY( ! af.test_and_set(memory_order_acquire) );
|
||||
VERIFY( af.test_and_set(memory_order_acquire) );
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue