@Test
public void testMatcherQuery1() throws Exception {

    Assert.assertNotNull(conformers);
    // make a query
    PharmacophoreQuery query = new PharmacophoreQuery();
    PharmacophoreQueryAtom o = new PharmacophoreQueryAtom("D", "[OX1]");
    PharmacophoreQueryAtom n1 = new PharmacophoreQueryAtom("A", "[N]");
    PharmacophoreQueryAtom n2 = new PharmacophoreQueryAtom("A", "[N]");
    query.addAtom(o);
    query.addAtom(n1);
    query.addAtom(n2);
    PharmacophoreQueryBond b1 = new PharmacophoreQueryBond(o, n1, 4.0, 4.5);
    PharmacophoreQueryBond b2 = new PharmacophoreQueryBond(o, n2, 4.0, 5.0);
    PharmacophoreQueryBond b3 = new PharmacophoreQueryBond(n1, n2, 5.4, 5.8);
    query.addBond(b1);
    query.addBond(b2);
    query.addBond(b3);
    PharmacophoreMatcher matcher = new PharmacophoreMatcher(query);
    boolean firstTime = true;
    int i = 0;
    boolean[] statuses = new boolean[100];
    for (IAtomContainer conf : conformers) {
        if (firstTime) {
            statuses[i] = matcher.matches(conf, true);
            firstTime = false;
        } else
            statuses[i] = matcher.matches(conf, false);
        i++;
    }
    int[] hits = new int[18];
    int idx = 0;
    for (i = 0; i < statuses.length; i++) {
        if (statuses[i]) hits[idx++] = i;
    }
    int[] expected = {0, 1, 2, 5, 6, 7, 8, 9, 10, 20, 23, 48, 62, 64, 66, 70, 76, 87};
    for (i = 0; i < expected.length; i++) {
        Assert.assertEquals("Hit " + i + " didn't match", expected[i], hits[i]);
    }
}