From 644c0fa6184bafa0ca8cd560ce9b5b4224863ee6 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 8 Aug 1996 16:28:24 +0000 Subject: added complete test cases for pthread_once. --- testsuites/psxtests/psx01/task.c | 43 ++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) (limited to 'testsuites/psxtests/psx01/task.c') diff --git a/testsuites/psxtests/psx01/task.c b/testsuites/psxtests/psx01/task.c index 4ff3d8e450..d9ee2e781a 100644 --- a/testsuites/psxtests/psx01/task.c +++ b/testsuites/psxtests/psx01/task.c @@ -21,36 +21,63 @@ #include "system.h" +void Test_init_routine( void ) +{ + puts( "Test_init_routine: invoked" ); +} + + void *Task_1_through_3( void *argument ) { int status; + pthread_once_t once = PTHREAD_ONCE_INIT; - /* XXX temporary */ + empty_line(); /* get id of this thread */ Task_id = pthread_self(); - printf( "Task's ID is 0x%08x\n", Task_id ); + printf( "Task_1: ID is 0x%08x\n", Task_id ); + + /* exercise pthread_equal */ status = pthread_equal( Task_id, Task_id ); if ( status ) - puts( "pthread_equal match case passed" ); + puts( "Task_1: pthread_equal match case passed" ); assert( status ); status = pthread_equal( Init_id, Task_id ); if ( !status ) - puts( "pthread_equal different case passed" ); + puts( "Task_1: pthread_equal different case passed" ); assert( !status ); - puts( "pthread_equal first id bad" ); + puts( "Task_1: pthread_equal first id bad" ); status = pthread_equal( -1, Task_id ); - assert( status == 0); + assert( !status ); - puts( "pthread_equal second id bad" ); + puts( "Task_1: pthread_equal second id bad" ); status = pthread_equal( Init_id, -1 ); - assert( status == 0); + assert( !status ); + + /* exercise pthread_once */ + + puts( "Task_1: pthread_once - EINVAL (NULL once_control)" ); + status = pthread_once( NULL, Test_init_routine ); + assert( status == EINVAL ); + + puts( "Task_1: pthread_once - EINVAL (NULL init_routine)" ); + status = pthread_once( &once, NULL ); + assert( status == EINVAL ); + + puts( "Task_1: pthread_once - SUCCESSFUL (init_routine executes)" ); + status = pthread_once( &once, Test_init_routine ); + assert( !status ); + + puts( "Task_1: pthread_once - SUCCESSFUL (init_routine does not execute)" ); + status = pthread_once( &once, Test_init_routine ); + assert( !status ); puts( "*** END OF POSIX TEST 1 ***" ); exit( 0 ); -- cgit v1.2.3