@Test
public void testTwoGroup() throws Exception {

    IAtomContainer mol = SilentChemObjectBuilder.getInstance().newAtomContainer();
    IAtom a1 = mol.getBuilder().newInstance(IAtom.class, "O");
    a1.setFormalCharge(0);
    a1.setPoint2d(new Point2d(5.9019, 0.5282));
    mol.addAtom(a1);
    IAtom a2 = mol.getBuilder().newInstance(IAtom.class, "O");
    a2.setFormalCharge(0);
    a2.setPoint2d(new Point2d(5.3667, -1.1191));
    mol.addAtom(a2);
    IAtom a3 = mol.getBuilder().newInstance(IAtom.class, "N");
    a3.setFormalCharge(0);
    a3.setPoint2d(new Point2d(3.3987, -0.4197));
    mol.addAtom(a3);
    IAtom a4 = mol.getBuilder().newInstance(IAtom.class, "N");
    a4.setFormalCharge(0);
    a4.setPoint2d(new Point2d(2.5896, 0.1681));
    mol.addAtom(a4);
    IAtom a5 = mol.getBuilder().newInstance(IAtom.class, "N");
    a5.setFormalCharge(0);
    a5.setPoint2d(new Point2d(3.8987, 1.1191));
    mol.addAtom(a5);
    IAtom a6 = mol.getBuilder().newInstance(IAtom.class, "N");
    a6.setFormalCharge(0);
    a6.setPoint2d(new Point2d(2.8987, 1.1191));
    mol.addAtom(a6);
    IAtom a7 = mol.getBuilder().newInstance(IAtom.class, "C");
    a7.setFormalCharge(0);
    a7.setPoint2d(new Point2d(4.2077, 0.1681));
    mol.addAtom(a7);
    IAtom a8 = mol.getBuilder().newInstance(IAtom.class, "C");
    a8.setFormalCharge(0);
    a8.setPoint2d(new Point2d(5.1588, -0.141));
    mol.addAtom(a8);
    IAtom a9 = mol.getBuilder().newInstance(IAtom.class, "H");
    a9.setFormalCharge(0);
    a9.setPoint2d(new Point2d(2.0, -0.0235));
    mol.addAtom(a9);
    IAtom a10 = mol.getBuilder().newInstance(IAtom.class, "H");
    a10.setFormalCharge(0);
    a10.setPoint2d(new Point2d(6.4916, 0.3366));
    mol.addAtom(a10);
    IBond b1 = mol.getBuilder().newInstance(IBond.class, a1, a8, IBond.Order.SINGLE);
    mol.addBond(b1);
    IBond b2 = mol.getBuilder().newInstance(IBond.class, a1, a10, IBond.Order.SINGLE);
    mol.addBond(b2);
    IBond b3 = mol.getBuilder().newInstance(IBond.class, a2, a8, IBond.Order.DOUBLE);
    mol.addBond(b3);
    IBond b4 = mol.getBuilder().newInstance(IBond.class, a3, a4, IBond.Order.SINGLE);
    mol.addBond(b4);
    IBond b5 = mol.getBuilder().newInstance(IBond.class, a3, a7, IBond.Order.DOUBLE);
    mol.addBond(b5);
    IBond b6 = mol.getBuilder().newInstance(IBond.class, a4, a6, IBond.Order.SINGLE);
    mol.addBond(b6);
    IBond b7 = mol.getBuilder().newInstance(IBond.class, a4, a9, IBond.Order.SINGLE);
    mol.addBond(b7);
    IBond b8 = mol.getBuilder().newInstance(IBond.class, a5, a6, IBond.Order.DOUBLE);
    mol.addBond(b8);
    IBond b9 = mol.getBuilder().newInstance(IBond.class, a5, a7, IBond.Order.SINGLE);
    mol.addBond(b9);
    IBond b10 = mol.getBuilder().newInstance(IBond.class, a7, a8, IBond.Order.SINGLE);
    mol.addBond(b10);
    AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol);
    addImplicitHydrogens(mol);
    IntegerResult result = (IntegerResult) descriptor.calculate(mol).getValue();
    Assert.assertEquals(3, result.intValue());
}