@Test
public void testFind_TwoChoices() throws Exception {

    IAtomContainer dummy = mock(IAtomContainer.class);
    int[][] g = new int[][]{{1, 5, 6}, {0, 2, 8}, {1, 3, 9}, {2, 4, 7}, {3, 5, 10}, {0, 4, 11}, {0, 14, 15},
            {3, 20, 21}, {1, 12, 13}, {2, 22, 23}, {4, 18, 19}, {5, 16, 17}, {8, 13}, {8, 12}, {6, 15}, {14, 6},
            {11, 17}, {16, 11}, {10, 19}, {10, 18}, {7, 21}, {7, 20}, {9, 23}, {22, 9}};
    // this mock the invariants
    long[] values = new long[]{0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
    EquivalentSetFinder finder = new MinimumEquivalentCyclicSet();
    Set<Integer> set = finder.find(values, dummy, g);
    assertThat(set.size(), is(6));
    assertTrue(set.contains(0));
    assertTrue(set.contains(1));
    assertTrue(set.contains(2));
    assertTrue(set.contains(3));
    assertTrue(set.contains(4));
    assertTrue(set.contains(5));
    // invert values, we should now get the other set
    values = new long[]{1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
    set = finder.find(values, dummy, g);
    assertThat(set.size(), is(6));
    assertTrue(set.contains(6));
    assertTrue(set.contains(7));
    assertTrue(set.contains(8));
    assertTrue(set.contains(9));
    assertTrue(set.contains(10));
    assertTrue(set.contains(11));
}