Graph { public Graph resonate() { return Localise.resonate(this); } Graph(int expSize);   Graph(Graph org); Atom atom(int i); int degree(int u); List<Edge> edges(int u); int[] neighbors(int u); boolean adjacent(int u, int v); int implHCount(int u); Edge edge(int u, int v); Edge edgeAt(int u, int j); Topology topologyOf(int u); Configuration configurationOf(int u); int order(); int size(); static Graph fromSmiles(String smi); static Graph parse(String smi, boolean strict, Set<String> warnings); String toSmiles(); String toSmiles(int[] visitedAt); Graph aromatic(); Graph resonate(); Graph kekule(); boolean assignable(); Graph permute(int[] p); Iterable<Atom> atoms(); Iterable<Edge> edges(); int getFlags(final int mask); int getFlags(); void setTitle(String title); String getTitle(); Graph sort(EdgeComparator comparator); static final int HAS_AROM; static final int HAS_ATM_STRO; static final int HAS_EXT_STRO; static final int HAS_BND_STRO; static final int HAS_STRO; }
@Test public void resonate() throws Exception { Graph g = Graph.fromSmiles("C1=CC2=CC=CC2=C1"); Graph h = Graph.fromSmiles("C=1C=C2C=CC=C2C=1"); assertThat(g.toSmiles(), is("C1=CC2=CC=CC2=C1")); assertThat(h.toSmiles(), is("C=1C=C2C=CC=C2C1")); assertThat(g.resonate().toSmiles(), is(h.resonate().toSmiles())); }