@Test
public void testCurrentDataSetIsASubsetOfExpectedDataSet() throws Exception {

    // GIVEN
    final String[] orderBy = new String[] {};
    final String[] toExclude = new String[] {};
    final Set<Class<? extends IColumnFilter>> columnFilters = Collections.emptySet();
    final DataSetComparator comparator = new DataSetComparator(orderBy, toExclude, false, columnFilters);
    when(expectedDataSet.getTableNames()).thenReturn(new String[] {
            TABLE_1_NAME, TABLE_2_NAME
    });
    when(expectedDataSet.getTable(any(String.class))).thenAnswer((final InvocationOnMock invocation) -> {
        final String tableName = (String) invocation.getArguments()[0];
        if (tableName == TABLE_1_NAME) {
            return table1;
        } else if (tableName == TABLE_2_NAME) {
            return table2;
        } else {
            throw new NoSuchTableException(tableName);
        }
    });
    when(currentDataSet.getTableNames()).thenReturn(new String[] {
            TABLE_2_NAME
    });
    when(currentDataSet.getTable(any(String.class))).thenAnswer((final InvocationOnMock invocation) -> {
        final String tableName = (String) invocation.getArguments()[0];
        if (tableName == TABLE_2_NAME) {
            return table2;
        } else {
            throw new NoSuchTableException(tableName);
        }
    });
    // WHEN
    comparator.compare(currentDataSet, expectedDataSet, errorCollector);
    // THEN
    assertThat(errorCollector.amountOfErrors(), equalTo(1));
    try {
        errorCollector.report();
        fail("AssertionError expected");
    } catch (final AssertionError e) {
        assertThat(e.getMessage(), containsString("failed in 1 case"));
        assertThat(e.getMessage(),
                containsString(TABLE_1_NAME + " was expected to be present and to contain <" + TABLE_1_ENTRIES + "> entries"));
    }
}