[PATCH v9] tests for fenv.h functions
Eshan Dhawan
eshandhawan51 at gmail.com
Thu Mar 26 19:26:47 UTC 2020
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
>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200327/2a73a562/attachment-0001.html>
More information about the devel
mailing list