[PATCH v3] tests for fenv.h functions
Eshan Dhawan
eshandhawan51 at gmail.com
Thu Mar 5 07:17:23 UTC 2020
If you want I would set the case in that manner.
On Thu, Mar 5, 2020 at 12:46 PM Eshan Dhawan <eshandhawan51 at gmail.com>
wrote:
>
>
> On Thu, Mar 5, 2020 at 4:37 AM Gedare Bloom <gedare at rtems.org> wrote:
>
>> 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?
>>
> No, We have to define the rounding direction flag in the function call.
> FE_TONEAREST is the default rounding direction if nothing is specified.
>
>> Why not do something like you did below, with rtems_test_assert(
>> fegetround() == FE_TONEAREST );?
>>
> I have used this way only in this test case because if there is an error
> with fegetround(),
> we could get the error code.
>
>> > +#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?
>>
> we wouldn't get any error code sent by the function in this method.
> So, if there is an error in the default then I would want it to be
> displayed.
>
>> > +#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
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200305/71f805c0/attachment.html>
More information about the devel
mailing list