ORCA-C/Tests/Spec.Conform/SPC17.2.0.1.CC

167 lines
4.3 KiB
C++

/* */
/* Special Conformance Test 17.2.0.1: Verification of fopen and fclose: */
/* creating new files */
/* */
/* Tester needs to verify that the 12 files named spc17.2.0.a - spc17.2.0.l */
/* are created on the work prefix. */
/* */
#include <stdio.h>
int main (void)
{
int i, count = 0;
FILE *f1, *f2, *f3, *f4, *f5, *f6, *f7, *f8; /* must be able to open */
/* 8 files at a time */
char fn1 [14] = "3/spc17.2.0.a"; /* define filenames */
char fn2 [14] = "3/spc17.2.0.b";
char fn3 [14] = "3/spc17.2.0.c";
char fn4 [14] = "3/spc17.2.0.d";
char fn5 [14] = "3/spc17.2.0.e";
char fn6 [14] = "3/spc17.2.0.f";
char fn7 [14] = "3/spc17.2.0.g";
char fn8 [14] = "3/spc17.2.0.h";
char fn9 [14] = "3/spc17.2.0.i";
char fn10 [14] = "3/spc17.2.0.j";
char fn11 [14] = "3/spc17.2.0.k";
char fn12 [14] = "3/spc17.2.0.l";
count++;
f1 = fopen (fn1, "w"); /* open for writing */
if (f1 == NULL)
goto Fail;
count++;
f2 = fopen (fn2, "w");
if (f2 == NULL)
goto Fail;
count++;
f3 = fopen (fn3, "a"); /* open for appending */
if (f3 == NULL)
goto Fail;
count++;
f4 = fopen (fn4, "w+"); /* open for update, starting at */
if (f4 == NULL) /* beginning of file */
goto Fail;
count++;
f5 = fopen (fn5, "w+"); /* open for update, clearing file */
if (f5 == NULL) /* contents */
goto Fail;
count++;
f6 = fopen (fn6, "a+"); /* open for update, starting at */
if (f6 == NULL) /* end of file */
goto Fail;
/* Open two more files, then shut 4 open ones before opening the */
/* last four files. These files will be open in "binary" mode. */
count++;
f7 = fopen (fn7, "wb"); /* open binary file for writing */
if (f7 == NULL)
goto Fail;
count++;
f8 = fopen (fn8, "wb");
if (f8 == NULL)
goto Fail;
count++;
i = fclose (f1); /* close the first four files */
if (i == EOF)
goto Fail2;
count++;
i = fclose (f2);
if (i == EOF)
goto Fail2;
count++;
i = fclose (f3);
if (i == EOF)
goto Fail2;
count++;
i = fclose (f4);
if (i == EOF)
goto Fail2;
count++;
f1 = fopen (fn9, "ab"); /* open binary file for appending */
if (f1 == NULL)
goto Fail;
count++;
f2 = fopen (fn10, "wb+"); /* open binary file for update, */
if (f2 == NULL) /* starting at beginning of file */
goto Fail;
count++;
f3 = fopen (fn11, "wb+"); /* open binary file for update, */
if (f3 == NULL) /* clearing file contents first */
goto Fail;
count++;
f4 = fopen (fn12, "ab+"); /* open binary file for update, */
if (f4 == NULL) /* starting at end of file */
goto Fail;
count++;
i = fclose (f1); /* close all of the open files */
if (i == EOF)
goto Fail2;
count++;
i = fclose (f2);
if (i == EOF)
goto Fail2;
count++;
i = fclose (f3);
if (i == EOF)
goto Fail2;
count++;
i = fclose (f4);
if (i == EOF)
goto Fail2;
count++;
i = fclose (f5);
if (i == EOF)
goto Fail2;
count++;
i = fclose (f6);
if (i == EOF)
goto Fail2;
count++;
i = fclose (f7);
if (i == EOF)
goto Fail2;
count++;
i = fclose (f8);
if (i == EOF)
goto Fail2;
printf ("Passed Special Conformance Test 17.2.0.1 ");
return 0;
Fail:
printf ("count = %d\n", count);
perror ("File creation failure in Special Conformance Test 17.2.0.1 ");
return 0;
Fail2:
printf ("count = %d\n", count);
printf ("Error when closing file");
}