PerturbedAtomHashGenerator extends AbstractHashGenerator implements AtomHashGenerator { @Override public long[] generate(IAtomContainer container) { int[][] graph = toAdjList(container); return generate(container, seeds.generate(container), factory.create(container, graph), graph); } PerturbedAtomHashGenerator(SeedGenerator seeds, AbstractAtomHashGenerator simple, Pseudorandom pseudorandom,
            StereoEncoderFactory factory, EquivalentSetFinder finder, AtomSuppression suppression); @Override long[] generate(IAtomContainer container);  }
@Test public void testGenerate() throws Exception { IAtomContainer m1 = cyclopentylcyclopentane(); IAtomContainer m2 = decahydronaphthalene(); SeedGenerator seeding = new SeedGenerator(BasicAtomEncoder.ATOMIC_NUMBER); Pseudorandom pseudorandom = new Xorshift(); MoleculeHashGenerator basic = new BasicMoleculeHashGenerator(new BasicAtomHashGenerator(seeding, pseudorandom, 8)); MoleculeHashGenerator perturb = new BasicMoleculeHashGenerator(new PerturbedAtomHashGenerator(seeding, new BasicAtomHashGenerator(seeding, pseudorandom, 8), pseudorandom, StereoEncoderFactory.EMPTY, new MinimumEquivalentCyclicSet(), AtomSuppression.unsuppressed())); assertThat(basic.generate(m1), is(basic.generate(m2))); assertThat(perturb.generate(m1), is(not(perturb.generate(m2)))); }