1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*
- STRFMON: size_t strfmon (char *buf, size_t nbyte, const char *fmt, ...)
- */
- #define TST_FUNCTION strfmon
- #include "tsp_common.c"
- #include "dat_strfmon.c"
- #include <monetary.h>
- int
- tst_strfmon (FILE * fp, int debug_flg)
- {
- TST_DECL_VARS (size_t);
- char buf[MONSIZE], *mon;
- size_t nbt;
- char *fmt;
- double val;
- TST_DO_TEST (strfmon)
- {
- TST_HEAD_LOCALE (strfmon, S_STRFMON);
- TST_DO_REC (strfmon)
- {
- TST_GET_ERRET (strfmon);
- nbt = TST_INPUT (strfmon).nbytes;
- fmt = TST_INPUT (strfmon).fmt;
- val = TST_INPUT (strfmon).val;
- memset (buf, 0, MONSIZE);
- if (nbt > MONSIZE)
- {
- err_count++;
- Result (C_FAILURE, S_STRFMON, CASE_3, "buffer too small in test");
- continue;
- }
- TST_CLEAR_ERRNO;
- ret = strfmon (buf, nbt, fmt, val, val, val);
- TST_SAVE_ERRNO;
- if (debug_flg) /* seems fprintf doesn't update the errno */
- {
- fprintf (stdout, "strfmon() [ %s : %d ]\n", locale, rec + 1);
- fprintf (stdout, " : err = %d | %s\n", errno_save,
- strerror (errno));
- fprintf (stdout, " : ret = %zd; \t fmt = |%s|\n", ret, fmt);
- fprintf (stdout, " : buf = |%s|\n\n", buf);
- }
- TST_IF_RETURN (S_STRFMON)
- {
- };
- if (errno != 0 || ret == -1)
- {
- continue;
- }
- mon = TST_EXPECT (strfmon).mon;
- if (!strcmp (buf, mon))
- {
- Result (C_SUCCESS, S_STRFMON, CASE_3, MS_PASSED);
- }
- else
- {
- err_count++;
- Result (C_FAILURE, S_STRFMON, CASE_3, "the formatted string is "
- "different from an expected result");
- }
- }
- }
- return err_count;
- }
|