[PATCH v3] tests for fenv.h functions

Gedare Bloom gedare at rtems.org
Wed Mar 4 23:07:05 UTC 2020


On Wed, Mar 4, 2020 at 11:12 AM Eshan dhawan <eshandhawan51 at gmail.com> wrote:
>
> ---
>  testsuites/psxtests/psxfenv01/init.c | 72 ++++++++++++++++++++++++++--
>  1 file changed, 68 insertions(+), 4 deletions(-)
>
> diff --git a/testsuites/psxtests/psxfenv01/init.c b/testsuites/psxtests/psxfenv01/init.c
> index cdb0fa596e..40c29e4fac 100644
> --- a/testsuites/psxtests/psxfenv01/init.c
> +++ b/testsuites/psxtests/psxfenv01/init.c
> @@ -46,6 +46,10 @@
>  #include <string.h>
>  #include <rtems/test.h>
>  #include <tmacros.h>
> +#include <assert.h>
I don't think this include is necessary?

> +#include <float.h>
> +
> +
Don't add extra vertical space unnecessarily. In general, there should
never be more than 1 blank line consecutively anywhere.
>
>  const char rtems_test_name[] = "PSXFENV 01";
>
> @@ -69,20 +73,23 @@ rtems_task Init(rtems_task_argument ignored)
>    #ifdef FE_ALL_EXCEPT /* floating-point exceptions */
>      puts( "fesetenv(FE_DFL_ENV)." );
>      r = fesetenv(FE_DFL_ENV);
> -    if (r)
> +    if (r){
Almost, need some more spaces around 'r' and between '){', like this:
"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)
> +    if (r){
>        printf("feclearexcept ==> 0x%x\n", r);
> +    }
>      rtems_test_assert( r == 0 );
>
>      r = fetestexcept( FE_ALL_EXCEPT );
> -    if (r)
> +    if (r){
>        printf("fetestexcept ==> 0x%x\n", r);
> +    }
>      rtems_test_assert( r == 0 );
>
>      /* Test 'FE_DIVBYZERO' */
> @@ -91,8 +98,63 @@ rtems_task Init(rtems_task_argument ignored)
>      b = 1.0;
>      c = b/a;
>      (void) c;
> +    /* Test 'fegetexceptflag()' and 'fesetexceptflag()' */
> +    r = fegetexceptflag(&excepts,FE_ALL_EXCEPT);
also need to add whitespace after commas.

> +    if(r){
> +      printf("fegetexceptflag ==> 0x%x\n", r);
> +    }
> +    rtems_test_assert(r == 0);
> +
> +    r = fesetexceptflag(&excepts, FE_ALL_EXCEPT);
spaces between ( ).
> +    if(r){
> +      printf("fesetexceptflag ==> 0x%x\n", r);
> +    }
> +    rtems_test_assert(r == 0);
ditto

> +
> +
2 blanks

> +    /* Test for 'fegetround()' and 'fesetround()' */
> +    /* They have four main macros to be tested seperated by ifdef*/
> +    /* Since not all architectures support them */
> +    /* The test case gets and sets the rounding directions */
Merge multiline comments with a single comment block
/* Test for ...
 * They have ...
 * Since not ...
 * The test case ...
 */

> +#ifdef FE_TONEAREST
> +    r = fegetround();
> +    if(r){
> +      printf("fegetround ==> 0x%x\n", r);
> +    }
> +    rtems_test_assert(r == FE_TONEAREST) ;
Is FE_TONEAREST expected to be the default behavior without any calls
to fesetround?
Why not do something like you did below, with 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) ;
This is a nice, concise way to test the rounding condition. Why not do
the same above with FE_TONEAREST?
> +#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
>
> -    fegetexceptflag(&excepts,FE_ALL_EXCEPT);
>
>  #ifdef FE_DIVBYZERO
>      r = feraiseexcept(FE_DIVBYZERO);
> @@ -125,3 +187,5 @@ rtems_task Init(rtems_task_argument ignored)
>  #define CONFIGURE_INIT
>  #include <rtems/confdefs.h>
>  /* end of file */
> +
> +
Don't add blank lines randomly.

> --
> 2.17.1
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list