summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/sptimer_err02/init.c
diff options
context:
space:
mode:
authorDaniel Ramirez <javamonn@gmail.com>2013-12-11 17:10:34 -0600
committerGedare Bloom <gedare@rtems.org>2013-12-11 20:11:08 -0500
commit07f4edc14b283486c9493b8e8083967c6ddeb47e (patch)
tree9fe46ce063c00369df4098f5af0cb16e7f9e9ce7 /testsuites/sptests/sptimer_err02/init.c
parentPR1960: ERC32_Is_interrupt_masked for ERC32 in erc32.h (diff)
downloadrtems-07f4edc14b283486c9493b8e8083967c6ddeb47e.tar.bz2
sptests: refactored sp09/screen14.c into two new tests
Diffstat (limited to 'testsuites/sptests/sptimer_err02/init.c')
-rw-r--r--testsuites/sptests/sptimer_err02/init.c228
1 files changed, 228 insertions, 0 deletions
diff --git a/testsuites/sptests/sptimer_err02/init.c b/testsuites/sptests/sptimer_err02/init.c
new file mode 100644
index 0000000000..04d2dc536b
--- /dev/null
+++ b/testsuites/sptests/sptimer_err02/init.c
@@ -0,0 +1,228 @@
+/*
+ * COPYRIGHT (c) 1989-2013.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tmacros.h>
+#include "test_support.h"
+
+/* forward declarations to avoid warnings */
+rtems_task Init(rtems_task_argument argument);
+rtems_timer_service_routine Delayed_routine(
+ rtems_id ignored_id,
+ void *ignored_address
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ puts( "\n\n*** TEST SPTIMER_ERR02 ***" );
+
+ rtems_status_code status;
+ rtems_time_of_day time;
+ rtems_id timer_id;
+ rtems_name timer_name;
+ bool skipUnsatisfied;
+
+ /* Set System time */
+ build_time( &time, 12, 31, 1992, 9, 0, 0, 0 );
+ status = rtems_clock_set( &time );
+ directive_failed( status, "rtems_clock_set" );
+
+ timer_name = rtems_build_name( 'T', 'M', '1', ' ' );
+
+ /* OK */
+ status = rtems_timer_create( timer_name, &timer_id );
+ directive_failed( status, "rtems_timer_create" );
+ puts( "TA1 - rtems_timer_create - 1 - RTEMS_SUCCESSFUL" );
+
+ /* incorrect state */
+ status = rtems_timer_server_fire_after( 0, 5, NULL, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INCORRECT_STATE,
+ "rtems_timer_server_fire_after incorrect state"
+ );
+ puts( "TA1 - rtems_timer_server_fire_after - RTEMS_INCORRECT_STATE" );
+
+ /* incorrect state */
+ status = rtems_timer_server_fire_when( 0, &time, NULL, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INCORRECT_STATE,
+ "rtems_timer_server_fire_when incorrect state"
+ );
+ puts( "TA1 - rtems_timer_server_fire_when - RTEMS_INCORRECT_STATE" );
+
+ /* invalid priority */
+ status = rtems_timer_initiate_server( 0, 0, 0 );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_PRIORITY,
+ "rtems_timer_initiate_server invalid priority"
+ );
+ puts( "TA1 - rtems_timer_initiate_server - RTEMS_INVALID_PRIORITY" );
+
+ skipUnsatisfied = false;
+ #if defined(__m32c__)
+ skipUnsatisfied = true;
+ #endif
+ if (skipUnsatisfied) {
+ puts( "TA1 - rtems_timer_initiate_server - RTEMS_UNSATISFIED -- SKIPPED" );
+ } else {
+ status = rtems_timer_initiate_server(
+ RTEMS_TIMER_SERVER_DEFAULT_PRIORITY,
+ 0x10000000,
+ 0
+ );
+ fatal_directive_status(
+ status,
+ RTEMS_UNSATISFIED,
+ "rtems_timer_initiate_server too much stack "
+ );
+ puts( "TA1 - rtems_timer_initiate_server - RTEMS_UNSATISFIED" );
+ }
+
+ status =
+ rtems_timer_initiate_server( RTEMS_TIMER_SERVER_DEFAULT_PRIORITY, 0, 0 );
+ directive_failed( status, "rtems_timer_initiate_server" );
+ puts( "TA1 - rtems_timer_initiate_server - SUCCESSFUL" );
+
+ /* NULL routine */
+ status = rtems_timer_server_fire_after( timer_id, 1, NULL, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_ADDRESS,
+ "rtems_timer_server_fire_after NULL routine"
+ );
+ puts( "TA1 - rtems_timer_server_fire_after - RTEMS_INVALID_ADDRESS" );
+
+ /* bad Id */
+ status = rtems_timer_server_fire_after(
+ rtems_build_id( 1, 1, 1, 256 ),
+ 5 * rtems_clock_get_ticks_per_second(),
+ Delayed_routine,
+ NULL
+ );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_ID,
+ "rtems_timer_server_fire_after illegal id"
+ );
+ puts( "TA1 - rtems_timer_server_fire_after - RTEMS_INVALID_ID" );
+
+ /* bad id */
+ build_time( &time, 12, 31, 1994, 9, 0, 0, 0 );
+ status = rtems_timer_server_fire_when(
+ rtems_build_id( 1, 1, 1, 256 ),
+ &time,
+ Delayed_routine,
+ NULL
+ );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_ID,
+ "rtems_timer_server_fire_when with illegal id"
+ );
+ puts( "TA1 - rtems_timer_server_fire_when - RTEMS_INVALID_ID" );
+
+ /* NULL routine */
+ status = rtems_timer_server_fire_after( timer_id, 1, NULL, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_ADDRESS,
+ "rtems_timer_server_fire_after NULL routine"
+ );
+ puts( "TA1 - rtems_timer_server_fire_after - RTEMS_INVALID_ADDRESS" );
+
+ /* 0 ticks */
+ status = rtems_timer_server_fire_after(
+ timer_id, 0, Delayed_routine, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_NUMBER,
+ "rtems_timer_server_fire_after with 0 ticks"
+ );
+ puts( "TA1 - rtems_timer_server_fire_after - RTEMS_INVALID_NUMBER" );
+
+ /* illegal time */
+ build_time( &time, 2, 5, 1987, 8, 30, 45, 0 );
+ status = rtems_timer_server_fire_when(
+ timer_id, &time, Delayed_routine, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_CLOCK,
+ "rtems_timer_server_fire_when with illegal time"
+ );
+ print_time(
+ "TA1 - rtems_timer_server_fire_when - ",
+ &time,
+ " - RTEMS_INVALID_CLOCK\n"
+ );
+
+ status = rtems_clock_get_tod( &time );
+ directive_failed( status, "rtems_clock_get_tod" );
+ print_time( "TA1 - rtems_clock_get_tod - ", &time, "\n" );
+
+ /* when NULL routine */
+ status = rtems_timer_server_fire_when( timer_id, &time, NULL, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_ADDRESS,
+ "rtems_timer_server_fire_when NULL routine"
+ );
+ puts( "TA1 - rtems_timer_server_fire_when - RTEMS_INVALID_ADDRESS" );
+
+ /* before current time */
+ build_time( &time, 2, 5, 1990, 8, 30, 45, 0 );
+ status = rtems_timer_server_fire_when(
+ timer_id, &time, Delayed_routine, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_CLOCK,
+ "rtems_timer_server_fire_when before current time"
+ );
+ print_time(
+ "TA1 - rtems_timer_server_fire_when - ",
+ &time,
+ " - before RTEMS_INVALID_CLOCK\n"
+ );
+
+ puts( "*** END OF TEST SPTIMER_ERR02 ***" );
+
+ rtems_test_exit(0);
+}
+
+rtems_timer_service_routine Delayed_routine(
+ rtems_id ignored_id,
+ void *ignored_address
+)
+{
+ /* Empty routine that gets passed to rtems_timer_fire_when */
+}
+
+#define CONFIGURE_INIT
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+/* Two Tasks: Init and Timer Server */
+#define CONFIGURE_MAXIMUM_TASKS 2
+#define CONFIGURE_MAXIMUM_TIMERS 1
+#define CONFIGURE_INIT_TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE * 2)
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_EXTRA_TASK_STACKS (1 * RTEMS_MINIMUM_STACK_SIZE)
+
+#include <rtems/confdefs.h>