Skip to content

Commit

Permalink
Fixed inconsistency between accepts() and write: also support writing…
Browse files Browse the repository at this point in the history
… of IAtomContainerSet and IAtomContainer as accepts() indicates (fixes #2827745)

Signed-off-by: rajarshi <rajarshi.guha@gmail.com>
  • Loading branch information
egonw authored and rajarshi committed Jul 30, 2009
1 parent f0678eb commit 6380578
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 5 deletions.
9 changes: 4 additions & 5 deletions src/main/org/openscience/cdk/io/SDFWriter.java
Expand Up @@ -43,7 +43,6 @@
import org.openscience.cdk.interfaces.IChemModel;
import org.openscience.cdk.interfaces.IChemObject;
import org.openscience.cdk.interfaces.IChemSequence;
import org.openscience.cdk.interfaces.IMolecule;
import org.openscience.cdk.interfaces.IMoleculeSet;
import org.openscience.cdk.io.formats.IResourceFormat;
import org.openscience.cdk.io.formats.SDFFormat;
Expand Down Expand Up @@ -147,8 +146,8 @@ public boolean accepts(Class classObject) {
*/
public void write(IChemObject object) throws CDKException {
try {
if (object instanceof IMoleculeSet) {
writeMoleculeSet((IMoleculeSet)object);
if (object instanceof IAtomContainerSet) {
writeMoleculeSet((IAtomContainerSet)object);
return;
} else if (object instanceof IChemFile) {
writeChemFile((IChemFile)object);
Expand All @@ -160,8 +159,8 @@ public void write(IChemObject object) throws CDKException {
file.addChemSequence(sequence);
writeChemFile((IChemFile)file);
return;
} else if (object instanceof IMolecule) {
writeMolecule((IMolecule)object);
} else if (object instanceof IAtomContainer) {
writeMolecule((IAtomContainer)object);
return;
}
} catch (Exception ex) {
Expand Down
18 changes: 18 additions & 0 deletions src/test/org/openscience/cdk/io/SDFWriterTest.java
Expand Up @@ -37,6 +37,8 @@
import org.openscience.cdk.DefaultChemObjectBuilder;
import org.openscience.cdk.Molecule;
import org.openscience.cdk.MoleculeSet;
import org.openscience.cdk.interfaces.IAtomContainer;
import org.openscience.cdk.interfaces.IAtomContainerSet;
import org.openscience.cdk.interfaces.IChemObjectBuilder;
import org.openscience.cdk.interfaces.IMoleculeSet;
import org.openscience.cdk.io.listener.PropertiesListener;
Expand Down Expand Up @@ -87,6 +89,22 @@ public class SDFWriterTest extends ChemObjectWriterTest {
Assert.assertTrue(writer.toString().indexOf("bar") != -1);
}

/**
* @cdk.bug 2827745
*/
@Test public void testWrite_IAtomContainerSet() throws Exception {
StringWriter writer = new StringWriter();
IAtomContainerSet molSet = builder.newAtomContainerSet();
IAtomContainer molecule = builder.newAtomContainer();
molecule.addAtom(builder.newAtom("C"));
molSet.addAtomContainer(molecule);

SDFWriter sdfWriter = new SDFWriter(writer);
sdfWriter.write(molSet);
sdfWriter.close();
Assert.assertNotSame(0, writer.toString().length());
}

@Test public void testWrite_IMoleculeSet_Properties() throws Exception {
StringWriter writer = new StringWriter();
IMoleculeSet molSet = new MoleculeSet();
Expand Down

0 comments on commit 6380578

Please sign in to comment.