From 469e71d720923be0cdfa9559b5b1da41f2e2f0f4 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 24 Aug 2010 15:01:04 +0000 Subject: 2010-08-24 Sebastian Huber * spchain/init.c, spchain/spchain.doc, spchain/spchain.scn: New test cases. --- testsuites/sptests/ChangeLog | 5 ++ testsuites/sptests/spchain/init.c | 96 +++++++++++++++++++++++++++++++++- testsuites/sptests/spchain/spchain.doc | 7 +++ testsuites/sptests/spchain/spchain.scn | 7 +++ 4 files changed, 114 insertions(+), 1 deletion(-) (limited to 'testsuites/sptests') diff --git a/testsuites/sptests/ChangeLog b/testsuites/sptests/ChangeLog index ea0bd61a54..598d447169 100644 --- a/testsuites/sptests/ChangeLog +++ b/testsuites/sptests/ChangeLog @@ -1,3 +1,8 @@ +2010-08-24 Sebastian Huber + + * spchain/init.c, spchain/spchain.doc, spchain/spchain.scn: New test + cases. + 2010-08-23 Sebastian Huber * spfatal24/.cvsignore, spfatal24/Makefile.am, diff --git a/testsuites/sptests/spchain/init.c b/testsuites/sptests/spchain/init.c index 9613dd805e..8db22a73ab 100644 --- a/testsuites/sptests/spchain/init.c +++ b/testsuites/sptests/spchain/init.c @@ -12,11 +12,101 @@ #include #include +#define EVENT RTEMS_EVENT_13 +#define TIMEOUT 1 + typedef struct { rtems_chain_node Node; int id; } test_node; +static void test_chain_get_with_wait(void) +{ + rtems_status_code sc = RTEMS_SUCCESSFUL; + rtems_chain_control chain; + rtems_chain_node *p = (rtems_chain_node *) 1; + + puts( "INIT - Verify rtems_chain_get_with_wait" ); + rtems_chain_initialize_empty( &chain ); + sc = rtems_chain_get_with_wait( &chain, EVENT, TIMEOUT, &p ); + rtems_test_assert( sc == RTEMS_TIMEOUT ); + rtems_test_assert( p == NULL ); +} + +static void test_chain_with_notification(void) +{ + rtems_status_code sc = RTEMS_SUCCESSFUL; + rtems_chain_control chain; + rtems_chain_node a; + rtems_chain_node *p = (rtems_chain_node *) 1; + rtems_event_set out = 0; + + puts( "INIT - Verify rtems_chain_append_with_notification" ); + rtems_chain_initialize_empty( &chain ); + sc = rtems_chain_append_with_notification( &chain, &a, rtems_task_self(), EVENT ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + sc = rtems_chain_get_with_wait( &chain, EVENT, TIMEOUT, &p ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + rtems_test_assert( p == &a ); + + puts( "INIT - Verify rtems_chain_prepend_with_notification" ); + rtems_chain_initialize_empty( &chain ); + sc = rtems_chain_prepend_with_notification( &chain, &a, rtems_task_self(), EVENT ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + sc = rtems_chain_get_with_wait( &chain, EVENT, TIMEOUT, &p ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + rtems_test_assert( p == &a ); + + puts( "INIT - Verify rtems_chain_get_with_notification" ); + rtems_chain_initialize_empty( &chain ); + rtems_chain_append( &chain, &a ); + sc = rtems_chain_get_with_notification( &chain, rtems_task_self(), EVENT, &p ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + rtems_test_assert( p == &a ); + sc = rtems_event_receive( + EVENT, + RTEMS_EVENT_ALL | RTEMS_WAIT, + TIMEOUT, + &out + ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + rtems_test_assert( out == EVENT ); +} + +static void test_chain_with_empty_check(void) +{ + rtems_chain_control chain; + rtems_chain_node a; + rtems_chain_node b; + rtems_chain_node *p; + bool empty; + + puts( "INIT - Verify rtems_chain_append_with_empty_check" ); + rtems_chain_initialize_empty( &chain ); + empty = rtems_chain_append_with_empty_check( &chain, &a ); + rtems_test_assert( empty ); + empty = rtems_chain_append_with_empty_check( &chain, &a ); + rtems_test_assert( !empty ); + + puts( "INIT - Verify rtems_chain_prepend_with_empty_check" ); + rtems_chain_initialize_empty( &chain ); + empty = rtems_chain_prepend_with_empty_check( &chain, &a ); + rtems_test_assert( empty ); + empty = rtems_chain_prepend_with_empty_check( &chain, &a ); + rtems_test_assert( !empty ); + + puts( "INIT - Verify rtems_chain_get_with_empty_check" ); + rtems_chain_initialize_empty( &chain ); + rtems_chain_append( &chain, &a ); + rtems_chain_append( &chain, &b ); + empty = rtems_chain_get_with_empty_check( &chain, &p ); + rtems_test_assert( !empty ); + rtems_test_assert( p == &a ); + empty = rtems_chain_get_with_empty_check( &chain, &p ); + rtems_test_assert( empty ); + rtems_test_assert( p == &b ); +} + rtems_task Init( rtems_task_argument ignored ) @@ -52,6 +142,10 @@ rtems_task Init( } } + test_chain_with_empty_check(); + test_chain_with_notification(); + test_chain_get_with_wait(); + puts( "*** END OF RTEMS CHAIN API TEST ***" ); rtems_test_exit(0); } @@ -59,7 +153,7 @@ rtems_task Init( /* configuration information */ #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER -#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #define CONFIGURE_RTEMS_INIT_TASKS_TABLE #define CONFIGURE_MAXIMUM_TASKS 1 diff --git a/testsuites/sptests/spchain/spchain.doc b/testsuites/sptests/spchain/spchain.doc index cbe5f2143b..77d01aecf2 100644 --- a/testsuites/sptests/spchain/spchain.doc +++ b/testsuites/sptests/spchain/spchain.doc @@ -19,6 +19,13 @@ directives: rtems_chain_append rtems_chain_insert rtems_chain_is_tail + rtems_chain_append_with_empty_check + rtems_chain_prepend_with_empty_check + rtems_chain_get_with_empty_check + rtems_chain_append_with_notification + rtems_chain_prepend_with_notification + rtems_chain_get_with_notification + rtems_chain_get_with_wait concepts: diff --git a/testsuites/sptests/spchain/spchain.scn b/testsuites/sptests/spchain/spchain.scn index 155f755a80..c482d3f551 100644 --- a/testsuites/sptests/spchain/spchain.scn +++ b/testsuites/sptests/spchain/spchain.scn @@ -1,4 +1,11 @@ *** TEST OF RTEMS CHAIN API *** Init - Initialize chain empty INIT - Verify rtems_chain_insert +INIT - Verify rtems_chain_append_with_empty_check +INIT - Verify rtems_chain_prepend_with_empty_check +INIT - Verify rtems_chain_get_with_empty_check +INIT - Verify rtems_chain_append_with_notification +INIT - Verify rtems_chain_prepend_with_notification +INIT - Verify rtems_chain_get_with_notification +INIT - Verify rtems_chain_get_with_wait *** END OF RTEMS CHAIN API TEST *** -- cgit v1.2.3