Esempio n. 1
0
void testValues() {
    f = 2;
    
    FILE* file = VALID_FILE;
    if (file != NULL) {
        __freading(file);
    }

    //@ assert f == 2;
    //@ assert vacuous: \false;
}
Esempio n. 2
0
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);
  }
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
void runSuccess() {
    FILE* file = VALID_FILE;
    if (file != NULL) {
        __freading(file);
    }
}
Esempio n. 5
0
void runFailure() {
    __freading(NULL);
}