public void TestMDMoleculeCustomizationRoundtripping() { StringWriter writer = new StringWriter(); CMLWriter cmlWriter = new CMLWriter(writer); cmlWriter.RegisterCustomizer(new MDMoleculeCustomizer()); MDMolecule molecule = MakeMDBenzene(); cmlWriter.Write(molecule); cmlWriter.Close(); string serializedMol = writer.ToString(); Debug.WriteLine("****************************** TestMDMoleculeCustomizationRoundtripping()"); Debug.WriteLine(serializedMol); Debug.WriteLine("******************************"); Debug.WriteLine("****************************** testMDMoleculeCustomization Write first"); Debug.WriteLine(serializedMol); Debug.WriteLine("******************************"); CMLReader reader = new CMLReader(new MemoryStream(Encoding.UTF8.GetBytes(serializedMol))); reader.RegisterConvention("md:mdMolecule", new MDMoleculeConvention(builder.NewChemFile())); IChemFile file = (IChemFile)reader.Read(builder.NewChemFile()); reader.Close(); var containers = ChemFileManipulator.GetAllAtomContainers(file).ToReadOnlyList(); Assert.AreEqual(1, containers.Count); var molecule2 = containers[0]; Assert.IsTrue(molecule2 is MDMolecule); MDMolecule mdMol = (MDMolecule)molecule2; Assert.AreEqual(6, mdMol.Atoms.Count); Assert.AreEqual(6, mdMol.Bonds.Count); var residues = mdMol.GetResidues(); Assert.AreEqual(2, residues.Count); Assert.AreEqual(3, ((Residue)residues[0]).Atoms.Count); Assert.AreEqual(3, ((Residue)residues[1]).Atoms.Count); Assert.AreEqual("myResidue1", ((Residue)residues[0]).Name); Assert.AreEqual("myResidue2", ((Residue)residues[1]).Name); Assert.AreEqual(0, ((Residue)residues[0]).GetNumber()); Assert.AreEqual(1, ((Residue)residues[1]).GetNumber()); var chargeGroup = mdMol.GetChargeGroups(); Assert.AreEqual(2, chargeGroup.Count); Assert.AreEqual(2, ((ChargeGroup)chargeGroup[0]).Atoms.Count); Assert.AreEqual(4, ((ChargeGroup)chargeGroup[1]).Atoms.Count); Assert.IsNotNull(((ChargeGroup)chargeGroup[0]).GetSwitchingAtom()); Assert.AreEqual("a2", ((ChargeGroup)chargeGroup[0]).GetSwitchingAtom().Id); Assert.IsNotNull(((ChargeGroup)chargeGroup[1]).GetSwitchingAtom()); Assert.AreEqual("a5", ((ChargeGroup)chargeGroup[1]).GetSwitchingAtom().Id); Assert.AreEqual(2, ((ChargeGroup)chargeGroup[0]).GetNumber()); Assert.AreEqual(3, ((ChargeGroup)chargeGroup[1]).GetNumber()); writer = new StringWriter(); cmlWriter = new CMLWriter(writer); cmlWriter.RegisterCustomizer(new MDMoleculeCustomizer()); cmlWriter.Write(mdMol); cmlWriter.Close(); string serializedMDMol = writer.ToString(); Debug.WriteLine("****************************** TestMDMoleculeCustomizationRoundtripping()"); Debug.WriteLine(serializedMol); Debug.WriteLine("******************************"); Debug.WriteLine("****************************** testMDMoleculeCustomization Write second"); Debug.WriteLine(serializedMDMol); Debug.WriteLine("******************************"); Assert.AreEqual(serializedMol, serializedMDMol); }