1*97c0a6f6Sjustin /* $NetBSD: t_isnan.c,v 1.5 2014/11/04 00:20:19 justin Exp $ */
24a45a29aSjruoho
34a45a29aSjruoho /*
44a45a29aSjruoho * This file is in the Public Domain.
54a45a29aSjruoho *
64a45a29aSjruoho * The nan test is blatently copied by Simon Burge from the infinity
74a45a29aSjruoho * test by Ben Harris.
84a45a29aSjruoho */
94a45a29aSjruoho
10e110dcc9Sjmmv #include <sys/param.h>
11e110dcc9Sjmmv
124a45a29aSjruoho #include <atf-c.h>
134a45a29aSjruoho
144a45a29aSjruoho #include <math.h>
154a45a29aSjruoho #include <string.h>
164a45a29aSjruoho
174a45a29aSjruoho ATF_TC(isnan_basic);
ATF_TC_HEAD(isnan_basic,tc)184a45a29aSjruoho ATF_TC_HEAD(isnan_basic, tc)
194a45a29aSjruoho {
204a45a29aSjruoho atf_tc_set_md_var(tc, "descr", "Verify that isnan(3) works");
214a45a29aSjruoho }
224a45a29aSjruoho
ATF_TC_BODY(isnan_basic,tc)234a45a29aSjruoho ATF_TC_BODY(isnan_basic, tc)
244a45a29aSjruoho {
25e110dcc9Sjmmv #if defined(__m68k__)
26e110dcc9Sjmmv atf_tc_skip("Test not applicable on " MACHINE_ARCH);
27e110dcc9Sjmmv #endif
28e110dcc9Sjmmv
290422e3f4Smartin #ifdef NAN
304a45a29aSjruoho /* NAN is meant to be a (float)NaN. */
314a45a29aSjruoho ATF_CHECK(isnan(NAN) != 0);
324a45a29aSjruoho ATF_CHECK(isnan((double)NAN) != 0);
337e7cfe75Smartin #else
347e7cfe75Smartin atf_tc_skip("Test not applicable");
350422e3f4Smartin #endif
364a45a29aSjruoho }
374a45a29aSjruoho
384a45a29aSjruoho ATF_TC(isinf_basic);
ATF_TC_HEAD(isinf_basic,tc)394a45a29aSjruoho ATF_TC_HEAD(isinf_basic, tc)
404a45a29aSjruoho {
414a45a29aSjruoho atf_tc_set_md_var(tc, "descr", "Verify that isinf(3) works");
424a45a29aSjruoho }
434a45a29aSjruoho
ATF_TC_BODY(isinf_basic,tc)444a45a29aSjruoho ATF_TC_BODY(isinf_basic, tc)
454a45a29aSjruoho {
46e110dcc9Sjmmv #if defined(__m68k__)
47e110dcc9Sjmmv atf_tc_skip("Test not applicable on " MACHINE_ARCH);
48e110dcc9Sjmmv #endif
494a45a29aSjruoho
504a45a29aSjruoho /* HUGE_VAL is meant to be an infinity. */
514a45a29aSjruoho ATF_CHECK(isinf(HUGE_VAL) != 0);
524a45a29aSjruoho
534a45a29aSjruoho /* HUGE_VALF is the float analog of HUGE_VAL. */
544a45a29aSjruoho ATF_CHECK(isinf(HUGE_VALF) != 0);
554a45a29aSjruoho
564a45a29aSjruoho /* HUGE_VALL is the long double analog of HUGE_VAL. */
574a45a29aSjruoho ATF_CHECK(isinf(HUGE_VALL) != 0);
584a45a29aSjruoho }
594a45a29aSjruoho
ATF_TP_ADD_TCS(tp)604a45a29aSjruoho ATF_TP_ADD_TCS(tp)
614a45a29aSjruoho {
624a45a29aSjruoho ATF_TP_ADD_TC(tp, isnan_basic);
634a45a29aSjruoho ATF_TP_ADD_TC(tp, isinf_basic);
644a45a29aSjruoho
654a45a29aSjruoho return atf_no_error();
664a45a29aSjruoho }
67