public boolean eval(ContentFile<?> file) {
    // TODO: detect the case where a column is missing from the file using file's max field id.
    return new MetricsEvalVisitor().eval(file);
  }
@Test
  public void testIsNaN() {
    boolean shouldRead = new InclusiveMetricsEvaluator(SCHEMA, isNaN("all_nans")).eval(FILE);
    assertThat(shouldRead).as("Should read: at least one nan value in all nan column").isTrue();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, isNaN("some_nans")).eval(FILE);
    assertThat(shouldRead).as("Should read: at least one nan value in some nan column").isTrue();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, isNaN("no_nans")).eval(FILE);
    assertThat(shouldRead).as("Should skip: no-nans column contains no nan values").isFalse();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, isNaN("all_nulls_double")).eval(FILE);
    assertThat(shouldRead).as("Should skip: all-null column doesn't contain nan value").isFalse();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, isNaN("no_nan_stats")).eval(FILE);
    assertThat(shouldRead)
        .as("Should read: no guarantee on if contains nan value without nan stats")
        .isTrue();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, isNaN("all_nans_v1_stats")).eval(FILE);
    assertThat(shouldRead).as("Should read: at least one nan value in all nan column").isTrue();

    shouldRead = new InclusiveMetricsEvaluator(SCHEMA, isNaN("nan_and_null_only")).eval(FILE);
    assertThat(shouldRead)
        .as("Should read: at least one nan value in nan and nulls only column")
        .isTrue();
  }