[PATCH v8] tests for fenv.h functions

Eshan Dhawan eshandhawan51 at gmail.com
Mon Mar 23 03:20:17 UTC 2020


I have modified the test to print nothing if the test passes 
In this test I have removed all the compulsory print statements that described the cases with comments so it would be easy to world on and will not print anything on the screen when the test passes 

> On 23-Mar-2020, at 1:41 AM, Eshan dhawan <eshandhawan51 at gmail.com> wrote:
> 
> ---
> testsuites/psxtests/psxfenv01/init.c        | 105 +++++++++++++++-----
> testsuites/psxtests/psxfenv01/psxfenv01.doc |   9 +-
> testsuites/psxtests/psxfenv01/psxfenv01.scn |   4 -
> 3 files changed, 85 insertions(+), 33 deletions(-)
> 
> diff --git a/testsuites/psxtests/psxfenv01/init.c b/testsuites/psxtests/psxfenv01/init.c
> index cdb0fa596e..b088209d7f 100644
> --- a/testsuites/psxtests/psxfenv01/init.c
> +++ b/testsuites/psxtests/psxfenv01/init.c
> @@ -46,11 +46,12 @@
> #include <string.h>
> #include <rtems/test.h>
> #include <tmacros.h>
> +#include <float.h>
> 
> const char rtems_test_name[] = "PSXFENV 01";
> 
> /* forward declarations to avoid warnings */
> -rtems_task Init(rtems_task_argument ignored);
> +rtems_task Init( rtems_task_argument ignored );
> 
> /* Test Function Begins */
> rtems_task Init(rtems_task_argument ignored)
> @@ -62,40 +63,90 @@ rtems_task Init(rtems_task_argument ignored)
> 
>   /*
>    * 'FE_ALL_EXCEPT' will be defined only when 'feclearexcept()',
> -   * 'fegetexceptflag()', 'feraiseexcept()', 'fesetexceptflag()' and
> -   * 'fetestexcept()' functions are supported by the architecture.
> +   * fegetexceptflag() , feraiseexcept(), fesetexceptflag() and
> +   * fetestexcept() functions are supported by the architecture.
>    * Hence their testcases can be wrapped under #ifdef and #endif.
>    */
>   #ifdef FE_ALL_EXCEPT /* floating-point exceptions */
> -    puts( "fesetenv(FE_DFL_ENV)." );
> -    r = fesetenv(FE_DFL_ENV);
> -    if (r)
> -      printf("fesetenv ==> %d\n", r);
> -    rtems_test_assert( r == 0 );
> -
> -    /* Test 'feclearexcept()' and 'fetestexcept()' in one go. */
> -    puts( "feclearexcept(FE_ALL_EXCEPT)." );
> -    r = feclearexcept(FE_ALL_EXCEPT);
> -    if (r)
> -      printf("feclearexcept ==> 0x%x\n", r);
> -    rtems_test_assert( r == 0 );
> -
> -    r = fetestexcept( FE_ALL_EXCEPT );
> -    if (r)
> -      printf("fetestexcept ==> 0x%x\n", r);
> -    rtems_test_assert( r == 0 );
> -
> -    /* Test 'FE_DIVBYZERO' */
> -    puts( "Divide by zero and confirm fetestexcept()" );
> +    r = fesetenv ( FE_DFL_ENV );
> +    if ( r ) {
> +      printf( "fesetenv ==> %d\n", r);
> +    }
> +    rtems_test_assert ( r == 0 );
> +
> +    /* Test feclearexcept() and fetestexcept() in one go. */
> +    r = feclearexcept ( FE_ALL_EXCEPT );
> +    if ( r ) {
> +      printf( "feclearexcept ==> 0x%x\n", r );
> +    }    
> +    rtems_test_assert ( r == 0 );
> +
> +    r = fetestexcept ( FE_ALL_EXCEPT );
> +    if ( r ) {
> +      printf( "fetestexcept ==> 0x%x\n", r );
> +    }
> +    rtems_test_assert ( r == 0 );
> +
> +    /* Test 'FE_DIVBYZERO' 
> +     *Divide by zero and confirm fetestexcept() */
>     a = 0.0;
>     b = 1.0;
>     c = b/a;
>     (void) c;
> -
> -    fegetexceptflag(&excepts,FE_ALL_EXCEPT);
> -
> +    /* Test fegetexceptflag() and fesetexceptflag() */
> +    r = fegetexceptflag ( &excepts, FE_ALL_EXCEPT );
> +    if ( r ) {
> +      printf( "fegetexceptflag ==> 0x%x\n", r );
> +    }
> +    rtems_test_assert ( r == 0 );
> +
> +    r = fesetexceptflag ( &excepts, FE_ALL_EXCEPT );
> +    if ( r ) {
> +      printf( "fesetexceptflag ==> 0x%x\n", r );
> +    }
> +    rtems_test_assert ( r == 0 );
> +
> +    /* Test for fegetround() and fesetround()
> +     * They have four main macros to be tested separated by ifdef
> +     * Since not all architectures support them 
> +     * The test case gets and sets the rounding directions */
> +#ifdef FE_TONEAREST
> +    rtems_test_assert ( fegetround() == FE_TONEAREST );   
> +#endif
> +#ifdef FE_TOWARDZERO    
> +  r = fesetround ( FE_TOWARDZERO );
> +  if ( r ) {
> +      printf( "fesetround ==> 0x%x\n", r );     
> +    } 
> +  rtems_test_assert ( r == 0 );
> +  rtems_test_assert ( fegetround() == FE_TOWARDZERO );
> +#endif
> +#ifdef FE_DOWNWARD
> +  r = fesetround ( FE_DOWNWARD );
> +  if ( r ) {
> +      printf( "fesetround ==> 0x%x\n", r );     
> +    } 
> +  rtems_test_assert ( r == 0 );
> +  rtems_test_assert ( fegetround() == FE_DOWNWARD );
> +#endif
> +#ifdef FE_UPWARD
> +  r = fesetround ( FE_UPWARD );
> +  if ( r ) {
> +      printf( "fesetround ==> 0x%x\n", r );     
> +    }   
> +  rtems_test_assert ( r == 0 );
> +  rtems_test_assert ( fegetround() == FE_UPWARD );
> +#endif
> +#ifdef FE_TONEAREST
> +  r = fesetround ( FE_TONEAREST );
> +  if ( r ) {
> +      printf( "fesetround ==> 0x%x\n", r );
> +    }     
> +  rtems_test_assert ( r == 0 );
> +#endif
> +  
> #ifdef FE_DIVBYZERO
> -    r = feraiseexcept(FE_DIVBYZERO);
> +    r = feraiseexcept ( FE_DIVBYZERO ) ;
>     rtems_test_assert( fetestexcept( FE_DIVBYZERO ) );
> #endif
> 
> diff --git a/testsuites/psxtests/psxfenv01/psxfenv01.doc b/testsuites/psxtests/psxfenv01/psxfenv01.doc
> index 3aa7757496..0238372013 100644
> --- a/testsuites/psxtests/psxfenv01/psxfenv01.doc
> +++ b/testsuites/psxtests/psxfenv01/psxfenv01.doc
> @@ -1,4 +1,4 @@
> -#  COPYRIGHT (c) 2019
> +#  COPYRIGHT (c) 2019
> #  On-Line Applications Research Corporation (OAR).
> #
> # SPDX-License-Identifier: BSD-2-Clause
> @@ -12,8 +12,13 @@ Directives:
>   fesetenv
>   feclearexcept
>   fetestexcept
> -  texceptflag
>   feraiseexcept
> +  fesetexeptflag
> +  fegetexeptflag
> +  fegetround
> +  fesetround
> +  
> +
> 
> Concepts:
> 
> diff --git a/testsuites/psxtests/psxfenv01/psxfenv01.scn b/testsuites/psxtests/psxfenv01/psxfenv01.scn
> index 21395e6712..6ea3bc255e 100644
> --- a/testsuites/psxtests/psxfenv01/psxfenv01.scn
> +++ b/testsuites/psxtests/psxfenv01/psxfenv01.scn
> @@ -1,7 +1,3 @@
> *** BEGIN OF TEST PSXFENV 01 ***
> -fesetenv(FE_DFL_ENV).
> -feclearexcept(FE_ALL_EXCEPT).
> -Divide by zero and confirm fetestexcept()
> -
> *** END OF TEST PSXFENV 01 ***
> 
> -- 
> 2.17.1
> 


More information about the devel mailing list