ORCA-C/Tests/Conformance/C17.9.0.1.CC

83 lines
2.1 KiB
C++

/* Conformance Test 17.9.0.1: Verification of fputc, putc, and putchar */
#include <stdio.h>
int main (void)
{
FILE *f1;
int i, j;
char ch;
f1 = fopen ("3/tmp", "w+"); /* open output file for test */
if (f1 == NULL)
goto Fail1;
/* Redirect standard output to a file */
stdout = freopen ("3/tmp2", "w+", stdout);
if (stdout == NULL)
goto Fail3;
for (ch = 'A', i = 0; i < 26; i++) /* write uppercase alphabet to */
{ /* output file */
j = fputc (ch, f1); /* test fputc */
if ((j == EOF) || ( ((char) j) != ch ))
goto Fail;
j = putc (ch, f1); /* test putc */
if ((j == EOF) || ( ((char) j) != ch ))
goto Fail;
j = putchar (ch); /* test putchar */
if ((j == EOF) || ( ((char) j) != ch ))
goto Fail;
ch++;
}
/* Check files' contents. */
rewind (f1);
rewind (stdout);
for (ch = 'A', i = 0; i < 26; i++)
{
if ( (j = fgetc (f1)) == EOF )
goto Fail;
if ( ((char) (j)) != ch )
goto Fail;
if ( (j = getc (f1)) == EOF )
goto Fail;
if ( ((char) (j)) != ch )
goto Fail;
if ( (j = fgetc (stdout)) == EOF )
goto Fail;
if ( ((char) (j)) != ch )
goto Fail;
ch++;
}
fclose(stdout); /* reset standard out */
i = fclose (f1); /* close the update file */
if (i == EOF)
goto Fail2;
printf ("Passed Conformance Test 17.9.0.1\n");
return 0;
Fail:
fprintf (stderr, "Failed Conformance Test 17.9.0.1\n");
return 0;
Fail1:
fprintf (stderr, "Unable to open input file for Conformance Test 17.9.0.1\n");
return 0;
Fail2:
fprintf (stderr, "Unable to close input file for Conformance Test 17.9.0.1\n");
return 0;
Fail3:
fprintf (stderr, "Unable to redirect stdout for Conformance Test 17.9.0.1\n");
return 0;
}