@Test
public void testRunOnlyReturnsVariantPassingAllFilters() {

    //The order of these filters is important
    List<VariantFilter> filters = new ArrayList<>();
    filters.add(pathogenicityFilter);
    filters.add(variantEffectFilter);
    filters.add(qualityFilter);
    filters.add(frequencyFilter);
    filters.forEach(filter -> instance.run(filter, variantEvaluations));
    assertThat(passesAllFilters.passedFilters(), is(true));
    assertThat(passesAllFilters.passedFilter(FilterType.VARIANT_EFFECT_FILTER), is(true));
    assertThat(passesAllFilters.passedFilter(FilterType.QUALITY_FILTER), is(true));
    assertThat(passesAllFilters.passedFilter(FilterType.FREQUENCY_FILTER), is(true));
    assertThat(passesAllFilters.passedFilter(FilterType.PATHOGENICITY_FILTER), is(true));
    //filters not run should return false
    assertThat(passesAllFilters.passedFilter(FilterType.ENTREZ_GENE_ID_FILTER), is(false));
    assertThat(passesQualityFrequencyFilter.passedFilters(), is(false));
    assertThat(passesQualityFrequencyFilter.getPassedFilterTypes().isEmpty(), is(true));
    assertThat(passesTargetQualityFilter.passedFilters(), is(false));
    assertThat(passesTargetQualityFilter.getPassedFilterTypes().isEmpty(), is(true));
    assertThat(failsAllFilters.passedFilters(), is(false));
    assertThat(failsAllFilters.getPassedFilterTypes().isEmpty(), is(true));
}