Skip to content

Commit dc49e6d

Browse files
committed
Ensure consistent ordering.
1 parent 3eb31e3 commit dc49e6d

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

storage/smiles/src/main/java/org/openscience/cdk/smiles/CxSmilesGenerator.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,7 @@ public int compare(CxDataSgroup a, CxDataSgroup b) {
348348
if (numSgroups > 0) {
349349
boolean firstSgH = true;
350350
if (state.mysgroups != null) {
351+
state.mysgroups.sort(Comparator.comparingInt(o -> o.id));
351352
for (CxSgroup sgroup : state.mysgroups) {
352353
if (sgroup.children.isEmpty())
353354
continue;
@@ -358,7 +359,9 @@ public int compare(CxDataSgroup a, CxDataSgroup b) {
358359
}
359360
sb.append(sgroup.id).append(':');
360361
boolean first = true;
361-
for (CxSgroup child : sgroup.children) {
362+
List<CxSgroup> children = new ArrayList<>(sgroup.children);
363+
children.sort(Comparator.comparingInt(o -> o.id));
364+
for (CxSgroup child : children) {
362365
if (child.id < 0)
363366
continue;
364367
if (!first)

storage/smiles/src/test/java/org/openscience/cdk/smiles/CxSmilesTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,6 @@ public void atomValues() throws InvalidSmilesException {
401401
SmilesParser smipar = new SmilesParser(bldr);
402402
IAtomContainer mol = smipar.parseSmiles("CN1CCCCC1.CO.O |Sg:c:0,1,2,3,4,5,6::,Sg:c:7,8::,Sg:c:9::,Sg:mix:0,1,2,3,4,5,6,7,8,9::,Sg:mix:7,8,9::,SgH:3:4.0,4:2.1|");
403403
SmilesGenerator smigen = new SmilesGenerator(SmiFlavor.CxSmiles);
404-
assertThat(smigen.create(mol), is("CN1CCCCC1.CO.O |Sg:c:0,1,2,3,4,5,6:c:,Sg:c:7,8:c:,Sg:c:9:c:,Sg:mix:0,1,2,3,4,5,6,7,8,9:mix:,Sg:mix:7,8,9:mix:,SgH:4:2.1,3:4.0|"));
404+
assertThat(smigen.create(mol), is("CN1CCCCC1.CO.O |Sg:c:0,1,2,3,4,5,6:c:,Sg:c:7,8:c:,Sg:c:9:c:,Sg:mix:0,1,2,3,4,5,6,7,8,9:mix:,Sg:mix:7,8,9:mix:,SgH:3:0.4,4:1.2|"));
405405
}
406406
}

0 commit comments

Comments
 (0)