@Test
public void testEthylbenzaldehydeManual() throws Exception {

    IReactionProcess type = new HomolyticCleavageReaction();
    IAtomContainerSet setOfReactants = builder.newInstance(IAtomContainerSet.class);
    //smiles("CCc1ccc(C=O)cc1")
    IAtomContainer molecule = builder.newInstance(IAtomContainer.class);
    molecule.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule.addBond(0, 1, IBond.Order.SINGLE);
    molecule.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule.addBond(1, 2, IBond.Order.SINGLE);
    molecule.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule.addBond(2, 3, IBond.Order.SINGLE);
    molecule.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule.addBond(3, 4, IBond.Order.DOUBLE);
    molecule.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule.addBond(4, 5, IBond.Order.SINGLE);
    molecule.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule.addBond(5, 6, IBond.Order.SINGLE);
    molecule.addAtom(builder.newInstance(IAtom.class, "O"));
    molecule.addBond(6, 7, IBond.Order.DOUBLE);
    molecule.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule.addBond(5, 8, IBond.Order.DOUBLE);
    molecule.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule.addBond(8, 9, IBond.Order.SINGLE);
    molecule.addBond(9, 2, IBond.Order.DOUBLE);
    addExplicitHydrogens(molecule);
    AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(molecule);
    LonePairElectronChecker lpcheck = new LonePairElectronChecker();
    lpcheck.saturate(molecule);
    molecule.getAtom(0).setFlag(CDKConstants.REACTIVE_CENTER, true);
    molecule.getAtom(1).setFlag(CDKConstants.REACTIVE_CENTER, true);
    molecule.getAtom(2).setFlag(CDKConstants.REACTIVE_CENTER, true);
    molecule.getBond(0).setFlag(CDKConstants.REACTIVE_CENTER, true);
    molecule.getBond(1).setFlag(CDKConstants.REACTIVE_CENTER, true);
    setOfReactants.addAtomContainer(molecule);
    /* has active center */
    List<IParameterReact> paramList = new ArrayList<IParameterReact>();
    IParameterReact param = new SetReactionCenter();
    param.setParameter(Boolean.TRUE);
    paramList.add(param);
    type.setParameterList(paramList);
    /* initiate */
    makeSureAtomTypesAreRecognized(molecule);
    IReactionSet setOfReactions = type.initiate(setOfReactants, null);
    Assert.assertEquals(2, setOfReactions.getReactionCount());
    Assert.assertEquals(2, setOfReactions.getReaction(0).getProductCount());
    Assert.assertEquals(2, setOfReactions.getReaction(1).getProductCount());
    IAtomContainer product = setOfReactions.getReaction(0).getProducts().getAtomContainer(0);
    /* C */
    IAtomContainer molecule2 = builder.newInstance(IAtomContainer.class);
    molecule2.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule2.addAtom(builder.newInstance(IAtom.class, "H"));
    molecule2.addBond(0, 1, IBond.Order.SINGLE);
    molecule2.addAtom(builder.newInstance(IAtom.class, "H"));
    molecule2.addBond(0, 2, IBond.Order.SINGLE);
    molecule2.addAtom(builder.newInstance(IAtom.class, "H"));
    molecule2.addBond(0, 3, IBond.Order.SINGLE);
    molecule2.addSingleElectron(new SingleElectron(molecule2.getAtom(0)));
    Assert.assertTrue(uiTester.isIsomorph(molecule2, product));
    product = setOfReactions.getReaction(0).getProducts().getAtomContainer(1);
    /* Cc1ccc(C=O)cc1 */
    IAtomContainer molecule3 = builder.newInstance(IAtomContainer.class);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.getAtom(0).setFormalCharge(1);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(0, 1, IBond.Order.SINGLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(1, 2, IBond.Order.SINGLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(2, 3, IBond.Order.DOUBLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(3, 4, IBond.Order.SINGLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(4, 5, IBond.Order.SINGLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "O"));
    molecule3.addBond(5, 6, IBond.Order.DOUBLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(4, 7, IBond.Order.DOUBLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(7, 8, IBond.Order.SINGLE);
    molecule3.addBond(8, 1, IBond.Order.DOUBLE);
    addExplicitHydrogens(molecule3);
    AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(molecule3);
    molecule3.addSingleElectron(new SingleElectron(molecule3.getAtom(0)));
    molecule3.getAtom(0).setFormalCharge(0);
    Assert.assertTrue(uiTester.isIsomorph(molecule3, product));
    product = setOfReactions.getReaction(1).getProducts().getAtomContainer(0);
    /* CC */
    molecule2 = builder.newInstance(IAtomContainer.class);
    molecule2.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule2.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule2.addBond(0, 1, IBond.Order.SINGLE);
    molecule2.getAtom(0).setFormalCharge(1);
    addExplicitHydrogens(molecule2);
    molecule2.getAtom(0).setFormalCharge(0);
    molecule2.addSingleElectron(new SingleElectron(molecule2.getAtom(0)));
    Assert.assertTrue(uiTester.isIsomorph(molecule2, product));
    product = setOfReactions.getReaction(1).getProducts().getAtomContainer(1);
    /* c1ccc(C=O)cc1 */
    molecule3 = builder.newInstance(IAtomContainer.class);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(0, 1, IBond.Order.SINGLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(1, 2, IBond.Order.DOUBLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(2, 3, IBond.Order.SINGLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(3, 4, IBond.Order.SINGLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "O"));
    molecule3.addBond(4, 5, IBond.Order.DOUBLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(3, 6, IBond.Order.DOUBLE);
    molecule3.addAtom(builder.newInstance(IAtom.class, "C"));
    molecule3.addBond(6, 7, IBond.Order.SINGLE);
    molecule3.addBond(7, 0, IBond.Order.DOUBLE);
    molecule3.getAtom(0).setFormalCharge(1);
    addExplicitHydrogens(molecule3);
    molecule3.getAtom(0).setFormalCharge(0);
    molecule3.addSingleElectron(new SingleElectron(molecule3.getAtom(0)));
    AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(molecule3);
    molecule3.addSingleElectron(new SingleElectron(molecule3.getAtom(0)));
    Assert.assertTrue(uiTester.isIsomorph(molecule3, product));
}