[PATCH v9] tests for fenv.h functions

Gedare Bloom gedare at rtems.org
Thu Mar 26 20:58:07 UTC 2020


Rule-of-thumb: If you add at least 3 SLOC to a file, add your copyright to it.

On Thu, Mar 26, 2020 at 1:27 PM Eshan Dhawan <eshandhawan51 at gmail.com> wrote:
>
> This code was already present in the psxtests written by Vaibhav last year
> I haven't changed any information related to copyright.
> If anything needs to be changed. I will change it in the next patch.
>
>
> On Thu, Mar 26, 2020 at 11:12 PM Aditya Upadhyay <aadit0402 at gmail.com> wrote:
>>
>> One more thing, If Vaibhav has provided you this source code and you modified then put Vaibhav's name alongwith your name as Copyright info.
>>
>> On Thu, 26 Mar 2020, 23:10 Aditya Upadhyay, <aadit0402 at gmail.com> wrote:
>>>
>>>
>>>
>>> On Thu, 26 Mar 2020, 22:59 Eshan dhawan, <eshandhawan51 at gmail.com> wrote:
>>>>
>>>> ---
>>>>  testsuites/psxtests/psxfenv01/init.c        | 87 ++++++++++++++++-----
>>>>  testsuites/psxtests/psxfenv01/psxfenv01.doc |  9 ++-
>>>>  testsuites/psxtests/psxfenv01/psxfenv01.scn |  4 -
>>>>  3 files changed, 76 insertions(+), 24 deletions(-)
>>>>
>>>> diff --git a/testsuites/psxtests/psxfenv01/init.c b/testsuites/psxtests/psxfenv01/init.c
>>>> index cdb0fa596e..158816888d 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);
>>>> +    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);
>>>> +    /* 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);
>>>> +    if ( r ) {
>>>> +      printf( "fetestexcept ==> 0x%x\n", r );
>>>> +    }
>>>>      rtems_test_assert( r == 0 );
>>>>
>>>> -    /* Test 'FE_DIVBYZERO' */
>>>> -    puts( "Divide by zero and confirm fetestexcept()" );
>>>> +    /* Test 'FE_DIVBYZERO'
>>>> +     *Divide by zero and confirm fetestexcept() */
>>>>      a = 0.0;
>>>>      b = 1.0;
>>>>      c = b/a;
>>>>      (void) c;
>>>> +    /* Test fegetexceptflag() and fesetexceptflag() */
>>>> +    r = fegetexceptflag( &excepts, FE_ALL_EXCEPT );
>>>> +    if ( r ) {
>>>> +      printf( "fegetexceptflag ==> 0x%x\n", r );
>>>> +    }
>>>> +    rtems_test_assert( r == 0 );
>>>>
>>>> -    fegetexceptflag(&excepts,FE_ALL_EXCEPT);
>>>> +    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
>>>> +
>>>> +
>>>
>>>
>>> Just remove this one unnecessary space after fesetround. Otherwise It looks good.
>>>
>>>>
>>>>  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
>>>>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list