[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