void testValues() { f = 2; FILE* file = VALID_FILE; if (file != NULL) { __freading(file); } //@ assert f == 2; //@ assert vacuous: \false; }
TEST(stdio_ext, __freading__fwriting) { FILE* fp; // Append (aka write-only). Never reading. Always writing. fp = fopen("/dev/zero", "a"); ASSERT_FALSE(__freading(fp)); // Not reading initially. ASSERT_TRUE(__fwriting(fp)); // Writing initially. ASSERT_TRUE(fputc('x', fp) != EOF); ASSERT_FALSE(__freading(fp)); // Not reading after write. ASSERT_TRUE(__fwriting(fp)); // Still writing after write. fclose(fp); // Write-only. Never reading. Always writing. fp = fopen("/dev/zero", "w"); ASSERT_FALSE(__freading(fp)); // Not reading initially. ASSERT_TRUE(__fwriting(fp)); // Writing initially. ASSERT_TRUE(fputc('x', fp) != EOF); ASSERT_FALSE(__freading(fp)); // Not reading after write. ASSERT_TRUE(__fwriting(fp)); // Still writing after write. fclose(fp); // Read-only. Always reading. Never writing. fp = fopen("/dev/zero", "r"); ASSERT_TRUE(__freading(fp)); // Reading initially. ASSERT_FALSE(__fwriting(fp)); // Not writing initially. ASSERT_TRUE(fgetc(fp) == 0); ASSERT_TRUE(__freading(fp)); // Still reading after read. ASSERT_FALSE(__fwriting(fp)); // Still not writing after read. fclose(fp); // The three read-write modes. for (auto read_write_mode : {"r+", "w+", "a+"}) { fp = fopen("/dev/zero", read_write_mode); ASSERT_FALSE(__freading(fp)); // Not reading initially. ASSERT_FALSE(__fwriting(fp)); // Not writing initially. ASSERT_TRUE(fgetc(fp) == 0); ASSERT_TRUE(__freading(fp)); // Reading after read. ASSERT_FALSE(__fwriting(fp)); // Not writing after read. ASSERT_TRUE(fputc('x', fp) != EOF); ASSERT_FALSE(__freading(fp)); // Not reading after write. ASSERT_TRUE(__fwriting(fp)); // Writing after write. fclose(fp); } }
static int do_test (void) { int res = 0; FILE *fp; fp = fopen (fname, "w"); printf ("Initial state for write-only stream: %d %d\n", __freading (fp) != 0, __fwriting (fp) != 0); res |= ((__freading (fp) != 0) != 0 || (__fwriting (fp) != 0) != 1); fclose (fp); fp = fopen (fname, "r"); printf ("Initial state for read-only stream: %d %d\n", __freading (fp) != 0, __fwriting (fp) != 0); res |= ((__freading (fp) != 0) != 1 || (__fwriting (fp) != 0) != 0); fclose (fp); fp = fopen (fname, "r+"); printf ("Initial state for read-write stream: %d %d\n", __freading (fp) != 0, __fwriting (fp) != 0); res |= ((__freading (fp) != 0) != 0 || (__fwriting (fp) != 0) != 0); fclose (fp); fp = fopen (fname, "w+"); printf ("Initial state for read-write stream: %d %d\n", __freading (fp) != 0, __fwriting (fp) != 0); res |= ((__freading (fp) != 0) != 0 || (__fwriting (fp) != 0) != 0); fclose (fp); return res; }
void runSuccess() { FILE* file = VALID_FILE; if (file != NULL) { __freading(file); } }
void runFailure() { __freading(NULL); }