public void TestFindMatchingAtomType_IAtomContainer()
        {
            var filename = "NCDK.Data.Mol2.atomtyping.mol2";
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new Mol2Reader(ins);
            var mol      = reader.Read(builder.NewAtomContainer());

            // just check consistency; other methods do perception testing
            var matcher = SybylAtomTypeMatcher.GetInstance();
            var types   = matcher.FindMatchingAtomTypes(mol).ToReadOnlyList();

            for (int i = 0; i < types.Count; i++)
            {
                IAtomType type = matcher.FindMatchingAtomType(mol, mol.Atoms[i]);
                Assert.AreEqual(type.AtomTypeName, types[i].AtomTypeName);
            }
        }
        public void TestAtomTyping()
        {
            var filename = "NCDK.Data.Mol2.atomtyping.mol2";
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new Mol2Reader(ins);
            var molecule = (IAtomContainer)reader.Read(builder.NewAtomContainer());

            Assert.IsNotNull(molecule);
            var reference = (IAtomContainer)molecule.Clone();

            // test if the perceived atom types match that
            PercieveAtomTypesAndConfigureAtoms(molecule);
            var refAtoms = reference.Atoms.GetEnumerator();
            var atoms    = molecule.Atoms.GetEnumerator();

            while (atoms.MoveNext() && refAtoms.MoveNext())
            {
                // work around aromaticity, which we skipped for now
                Assert.AreEqual(refAtoms.Current.AtomTypeName, atoms.Current.AtomTypeName,
                                "Perceived atom type does not match atom type in file");
            }
        }