/** * * @param mols * @param out * @throws IOException * @throws IllegalArgumentException * @throws CDKException */ void writeMolsToMolfile(IAtomContainerSet mols, Writer out) throws IOException, IllegalArgumentException, CDKException { try (SDFWriter writer = new SDFWriter(out)) { writer.write(mols); writer.close(); } }
@Test public void testPropertyOutput_two() throws CDKException, IOException { IAtomContainer adenine = TestMoleculeFactory.makeAdenine(); StringWriter sw = new StringWriter(); SDFWriter sdf = new SDFWriter(sw, Collections.singleton("two")); adenine.setProperty("one", "a"); adenine.setProperty("two", "b"); sdf.write(adenine); sdf.close(); String out = sw.toString(); assertTrue(out.contains("> <two>")); assertFalse(out.contains("> <one>")); }
@Test public void testPropertyOutput_one() throws CDKException, IOException { IAtomContainer adenine = TestMoleculeFactory.makeAdenine(); StringWriter sw = new StringWriter(); SDFWriter sdf = new SDFWriter(sw, Collections.singleton("one")); adenine.setProperty("one", "a"); adenine.setProperty("two", "b"); sdf.write(adenine); sdf.close(); String out = sw.toString(); assertTrue(out.contains("> <one>")); assertFalse(out.contains("> <two>")); }
@Test public void testPropertyOutput_none() throws CDKException, IOException { IAtomContainer adenine = TestMoleculeFactory.makeAdenine(); StringWriter sw = new StringWriter(); SDFWriter sdf = new SDFWriter(sw, Collections.<String> emptySet()); adenine.setProperty("one", "a"); adenine.setProperty("two", "b"); sdf.write(adenine); sdf.close(); String out = sw.toString(); assertFalse(out.contains("> <two>")); assertFalse(out.contains("> <one>")); } }
@Test public void testPropertyOutput_All() throws CDKException, IOException { IAtomContainer adenine = TestMoleculeFactory.makeAdenine(); StringWriter sw = new StringWriter(); SDFWriter sdf = new SDFWriter(sw); adenine.setProperty("one", "a"); adenine.setProperty("two", "b"); sdf.write(adenine); sdf.close(); String out = sw.toString(); assertTrue(out.contains("> <one>")); assertTrue(out.contains("> <two>")); }
@Test public void invalidSDfileHeaderTags() throws Exception { StringWriter writer = new StringWriter(); SDFWriter sdfWriter = new SDFWriter(writer); IAtomContainer molecule = new AtomContainer(); molecule.addAtom(new Atom("C")); molecule.setProperty("http://not-valid.com", "URL"); sdfWriter.write(molecule); sdfWriter.close(); Assert.assertThat(writer.toString(), Matchers.containsString("> <http://not_valid_com>")); }
@Test public void testWrite_IAtomContainerSet_Properties() throws Exception { StringWriter writer = new StringWriter(); IAtomContainerSet molSet = new AtomContainerSet(); IAtomContainer molecule = new AtomContainer(); molecule.addAtom(new Atom("C")); molecule.setProperty("foo", "bar"); molSet.addAtomContainer(molecule); SDFWriter sdfWriter = new SDFWriter(writer); sdfWriter.write(molSet); sdfWriter.close(); Assert.assertTrue(writer.toString().indexOf("<foo>") != -1); Assert.assertTrue(writer.toString().indexOf("bar") != -1); }
@Test public void testWrite_IAtomContainerSet_SingleMolecule() throws Exception { StringWriter writer = new StringWriter(); IAtomContainerSet molSet = new AtomContainerSet(); IAtomContainer molecule = new AtomContainer(); molecule.addAtom(new Atom("C")); molSet.addAtomContainer(molecule); SDFWriter sdfWriter = new SDFWriter(writer); sdfWriter.write(molSet); sdfWriter.close(); Assert.assertTrue(writer.toString().indexOf("$$$$") != -1); }
@Test public void testWrite_IAtomContainer_MultIAtomContainer() throws Exception { StringWriter writer = new StringWriter(); SDFWriter sdfWriter = new SDFWriter(writer); IAtomContainer molecule = new AtomContainer(); molecule.addAtom(new Atom("C")); molecule.setProperty("foo", "bar"); sdfWriter.write(molecule); molecule = new AtomContainer(); molecule.addAtom(new Atom("C")); molecule.setProperty("toys", "r-us"); sdfWriter.write(molecule); sdfWriter.close(); Assert.assertTrue(writer.toString().indexOf("foo") != -1); Assert.assertTrue(writer.toString().indexOf("bar") != -1); Assert.assertTrue(writer.toString().indexOf("toys") != -1); Assert.assertTrue(writer.toString().indexOf("r-us") != -1); Assert.assertTrue(writer.toString().indexOf("$$$$") != -1); }
/** * @cdk.bug 2827745 */ @Test public void testWrite_IAtomContainerSet() throws Exception { StringWriter writer = new StringWriter(); IAtomContainerSet molSet = builder.newInstance(IAtomContainerSet.class); IAtomContainer molecule = builder.newInstance(IAtomContainer.class); molecule.addAtom(builder.newInstance(IAtom.class, "C")); molSet.addAtomContainer(molecule); SDFWriter sdfWriter = new SDFWriter(writer); sdfWriter.write(molSet); sdfWriter.close(); Assert.assertNotSame(0, writer.toString().length()); }
@Test public void testWrite_IAtomContainerSet_CDKProperties() throws Exception { StringWriter writer = new StringWriter(); IAtomContainerSet molSet = new AtomContainerSet(); IAtomContainer molecule = new AtomContainer(); molecule.addAtom(new Atom("C")); molecule.setProperty(InvPair.CANONICAL_LABEL, "bar"); molSet.addAtomContainer(molecule); SDFWriter sdfWriter = new SDFWriter(writer); sdfWriter.write(molSet); sdfWriter.close(); Assert.assertTrue(writer.toString().indexOf(InvPair.CANONICAL_LABEL) == -1); }
@Test public void testWrite_IAtomContainerSet_Properties_Off() throws Exception { StringWriter writer = new StringWriter(); IAtomContainerSet molSet = new AtomContainerSet(); IAtomContainer molecule = new AtomContainer(); molecule.addAtom(new Atom("C")); molecule.setProperty("foo", "bar"); molSet.addAtomContainer(molecule); SDFWriter sdfWriter = new SDFWriter(writer); Properties sdfWriterProps = new Properties(); sdfWriterProps.put("writeProperties", "false"); sdfWriter.addChemObjectIOListener(new PropertiesListener(sdfWriterProps)); sdfWriter.customizeJob(); sdfWriter.write(molSet); sdfWriter.close(); String result = writer.toString(); Assert.assertFalse(result.contains("<foo>")); }
/** * @cdk.bug 3392485 */ @Test public void testIOPropPropagation() throws Exception { IAtomContainer mol = TestMoleculeFactory.makeBenzene(); for (IAtom atom : mol.atoms()) { atom.setFlag(ISAROMATIC, true); } for (IBond bond : mol.bonds()) { bond.setFlag(ISAROMATIC, true); } StringWriter strWriter = new StringWriter(); SDFWriter writer = new SDFWriter(strWriter); Properties sdfWriterProps = new Properties(); sdfWriterProps.put("WriteAromaticBondTypes", "true"); writer.addChemObjectIOListener(new PropertiesListener(sdfWriterProps)); writer.customizeJob(); writer.write(mol); writer.close(); String output = strWriter.toString(); Assert.assertTrue(output.contains("4 0 0 0 0")); }
sdfWriter.close();
@Test public void testWrite_IAtomContainerSet_MultIAtomContainer() throws Exception { StringWriter writer = new StringWriter(); IAtomContainerSet molSet = new AtomContainerSet(); IAtomContainer molecule = new AtomContainer(); molecule.addAtom(new Atom("C")); molSet.addAtomContainer(molecule); molecule = new AtomContainer(); molecule.addAtom(new Atom("C")); molSet.addAtomContainer(molecule); SDFWriter sdfWriter = new SDFWriter(writer); sdfWriter.write(molSet); sdfWriter.close(); Assert.assertTrue(writer.toString().indexOf("$$$$") != -1); }
@Test public void chooseFormatToWrite2() throws Exception { StringWriter writer = new StringWriter(); SDFWriter sdfWriter = new SDFWriter(writer); sdfWriter.setAlwaysV3000(true); IAtomContainer molecule = new AtomContainer(); molecule.addAtom(new Atom("CH4")); sdfWriter.write(molecule); molecule = new AtomContainer(); for (int i = 0; i < 1000; i++) molecule.addAtom(new Atom("CH4")); sdfWriter.write(molecule); molecule = new AtomContainer(); molecule.addAtom(new Atom("CH4")); sdfWriter.write(molecule); sdfWriter.close(); String result = writer.toString(); assertThat(result, Matchers.not(Matchers.containsString("V2000"))); assertThat(result, Matchers.containsString("V3000")); }
@Test public void chooseFormatToWrite() throws Exception { StringWriter writer = new StringWriter(); SDFWriter sdfWriter = new SDFWriter(writer); IAtomContainer molecule = new AtomContainer(); molecule.addAtom(new Atom("CH4")); sdfWriter.write(molecule); molecule = new AtomContainer(); for (int i = 0; i < 1000; i++) molecule.addAtom(new Atom("CH4")); sdfWriter.write(molecule); molecule = new AtomContainer(); molecule.addAtom(new Atom("CH4")); sdfWriter.write(molecule); sdfWriter.close(); String result = writer.toString(); assertThat(result, Matchers.containsString("V2000")); assertThat(result, Matchers.containsString("V3000")); }