From 99cb7204d053e6b61a6f71229b3d9e8638e65467 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 13 May 2011 13:50:51 +0000 Subject: 2011-05-13 Sebastian Huber * sp21/init.c, sp21/sp21.doc sp21/sp21.scn: New test cases. --- testsuites/sptests/ChangeLog | 4 ++++ testsuites/sptests/sp21/init.c | 48 ++++++++++++++++++++++++++++++++++++++-- testsuites/sptests/sp21/sp21.doc | 2 ++ testsuites/sptests/sp21/sp21.scn | 1 + 4 files changed, 53 insertions(+), 2 deletions(-) (limited to 'testsuites') diff --git a/testsuites/sptests/ChangeLog b/testsuites/sptests/ChangeLog index eaf429a3e2..d612194d37 100644 --- a/testsuites/sptests/ChangeLog +++ b/testsuites/sptests/ChangeLog @@ -1,3 +1,7 @@ +2011-05-13 Sebastian Huber + + * sp21/init.c, sp21/sp21.doc sp21/sp21.scn: New test cases. + 2011-05-06 Joel Sherrill * sp39/init.c: Fix tests broken in warning pass. diff --git a/testsuites/sptests/sp21/init.c b/testsuites/sptests/sp21/init.c index ed2649caa9..5ad0c14598 100644 --- a/testsuites/sptests/sp21/init.c +++ b/testsuites/sptests/sp21/init.c @@ -15,12 +15,14 @@ #include #include - +#include +#include #define PRIurtems_device_major_number PRIu32 #define STUB_DRIVER_MAJOR 0x2 -#define NO_DRIVER_MAJOR 0x3 +#define ZERO_DRIVER_MAJOR 0x3 +#define NO_DRIVER_MAJOR 0x4 #define INVALID_DRIVER_MAJOR \ (rtems_configuration_get_number_of_device_drivers() + 1) @@ -204,6 +206,45 @@ void do_test_io_lookup_name(void) directive_failed( sc, "lookup /dev/null" ); } +void do_test_zero_driver(void) +{ + rtems_status_code sc = RTEMS_SUCCESSFUL; + char in = 'I'; + rtems_libio_rw_args_t rw_in = { + .buffer = &in, + .count = sizeof(in) + }; + char out = 'O'; + rtems_libio_rw_args_t rw_out = { + .buffer = &out, + .count = sizeof(out) + }; + + puts( "----- TESTING THE ZERO DRIVER CHECKS -----" ); + + sc = rtems_io_initialize( ZERO_DRIVER_MAJOR, 0, NULL ); + rtems_test_assert( sc == RTEMS_TOO_MANY ); + + sc = rtems_io_open( ZERO_DRIVER_MAJOR, 0, NULL ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + + sc = rtems_io_close( ZERO_DRIVER_MAJOR, 0, NULL ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + + sc = rtems_io_read( ZERO_DRIVER_MAJOR, 0, &rw_in ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + rtems_test_assert( in == 0 ); + rtems_test_assert( rw_in.bytes_moved == sizeof(in) ); + + sc = rtems_io_write( ZERO_DRIVER_MAJOR, 0, &rw_out ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + rtems_test_assert( out == 'O' ); + rtems_test_assert( rw_out.bytes_moved == sizeof(out) ); + + sc = rtems_io_control( ZERO_DRIVER_MAJOR, 0, NULL ); + rtems_test_assert( sc == RTEMS_IO_ERROR ); +} + rtems_task Init( rtems_task_argument argument ) @@ -214,6 +255,8 @@ rtems_task Init( do_test_io_lookup_name(); + do_test_zero_driver(); + puts( "*** END OF TEST 21 ***" ); rtems_test_exit( 0 ); } @@ -223,6 +266,7 @@ rtems_task Init( #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #define CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER #define CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER #define CONFIGURE_MAXIMUM_TASKS 1 diff --git a/testsuites/sptests/sp21/sp21.doc b/testsuites/sptests/sp21/sp21.doc index 00e769a10d..10e626c9da 100644 --- a/testsuites/sptests/sp21/sp21.doc +++ b/testsuites/sptests/sp21/sp21.doc @@ -25,3 +25,5 @@ concepts: b. Verifies all I/O manager directives call and return from the driver entry points in the driver address table. + + c. Check that zero driver works. diff --git a/testsuites/sptests/sp21/sp21.scn b/testsuites/sptests/sp21/sp21.scn index d13e32e65d..6c099dfc13 100644 --- a/testsuites/sptests/sp21/sp21.scn +++ b/testsuites/sptests/sp21/sp21.scn @@ -28,4 +28,5 @@ rtems_io_unregister_driver - RTEMS_SUCCESSFUL rtems_io_lookup_name( "", &info ) - RTEMS_UNSATISFIED rtems_io_lookup_name( "/dev", &info ) - RTEMS_UNSATISFIED rtems_io_lookup_name( "/dev/null", &info ) - RTEMS_SUCCESSFUL +----- TESTING THE ZERO DRIVER CHECKS ----- *** END OF TEST 21 *** -- cgit v1.2.3