Ejemplo n.º 1
0
        public virtual void TestGetLonePairCount_Molecule()
        {
            IAtomContainer acetone = (IAtomContainer)NewChemObject();
            IAtom          c1      = acetone.Builder.NewAtom("C");
            IAtom          c2      = acetone.Builder.NewAtom("C");
            IAtom          o       = acetone.Builder.NewAtom("O");
            IAtom          c3      = acetone.Builder.NewAtom("C");

            acetone.Atoms.Add(c1);
            acetone.Atoms.Add(c2);
            acetone.Atoms.Add(c3);
            acetone.Atoms.Add(o);
            IBond b1 = acetone.Builder.NewBond(c1, c2, BondOrder.Single);
            IBond b2 = acetone.Builder.NewBond(c1, o, BondOrder.Double);
            IBond b3 = acetone.Builder.NewBond(c1, c3, BondOrder.Single);

            acetone.Bonds.Add(b1);
            acetone.Bonds.Add(b2);
            acetone.Bonds.Add(b3);

            // add lone pairs on oxygen
            ILonePair lp1 = acetone.Builder.NewLonePair(o);
            ILonePair lp2 = acetone.Builder.NewLonePair(o);

            acetone.LonePairs.Add(lp1);
            acetone.LonePairs.Add(lp2);

            Assert.AreEqual(2, acetone.LonePairs.Count);
        }
Ejemplo n.º 2
0
        public void TestMatchAgainstItself()
        {
            var    m_bond1 = new Mock <ILonePair>(); ILonePair bond1 = m_bond1.Object;
            string result = LonePairDiff.Diff(bond1, bond1);

            AssertZeroLength(result);
        }
Ejemplo n.º 3
0
        public void TestNewLonePair_IAtom()
        {
            IChemObjectBuilder builder  = RootObject.Builder;
            ILonePair          lonePair = builder.NewLonePair(builder.NewAtom());

            Assert.IsNotNull(lonePair);
        }
Ejemplo n.º 4
0
        public override void TestClone()
        {
            ILonePair lp    = (ILonePair)NewChemObject();
            object    clone = lp.Clone();

            Assert.IsTrue(clone is ILonePair);
        }
Ejemplo n.º 5
0
        public virtual void TestContains_IAtom()
        {
            ILonePair lp   = (ILonePair)NewChemObject();
            IAtom     atom = lp.Builder.NewAtom("N");

            lp.Atom = atom;
            Assert.IsTrue(lp.Contains(atom));
        }
Ejemplo n.º 6
0
        public virtual void TestSetAtom_IAtom()
        {
            ILonePair lp   = (ILonePair)NewChemObject();
            IAtom     atom = lp.Builder.NewAtom("N");

            lp.Atom = atom;
            Assert.AreEqual(atom, lp.Atom);
        }
Ejemplo n.º 7
0
        public override void TestGetElectronCount()
        {
            ILonePair lp = (ILonePair)NewChemObject();

            Assert.AreEqual(2, lp.ElectronCount.Value);

            lp = lp.Builder.NewLonePair(lp.Builder.NewAtom("N"));
            Assert.AreEqual(2, lp.ElectronCount.Value);
        }
Ejemplo n.º 8
0
        public override void TestToString()
        {
            ILonePair lp          = (ILonePair)NewChemObject();
            string    description = lp.ToString();

            for (int i = 0; i < description.Length; i++)
            {
                Assert.IsTrue(description[i] != '\n');
                Assert.IsTrue(description[i] != '\r');
            }
        }
Ejemplo n.º 9
0
        public virtual void TestClone_IAtom()
        {
            ILonePair lp   = (ILonePair)NewChemObject();
            IAtom     atom = lp.Builder.NewAtom("N");

            lp.Atom = atom;

            // test cloning of atom
            ILonePair clone = (ILonePair)lp.Clone();

            Assert.AreNotSame(atom, clone.Atom);
        }
Ejemplo n.º 10
0
        public void TestDifference()
        {
            var m_carbon = new Mock <IAtom>(); IAtom carbon = m_carbon.Object;
            var m_oxygen = new Mock <IAtom>(); IAtom oxygen = m_oxygen.Object;

            m_carbon.SetupGet(n => n.Symbol).Returns("C");
            m_oxygen.SetupGet(n => n.Symbol).Returns("O");

            var m_bond1 = new Mock <ILonePair>(); ILonePair bond1 = m_bond1.Object;
            var m_bond2 = new Mock <ILonePair>(); ILonePair bond2 = m_bond2.Object;

            m_bond1.SetupGet(n => n.Atom).Returns(carbon);
            m_bond2.SetupGet(n => n.Atom).Returns(oxygen);

            IDifference difference = LonePairDiff.Difference(bond1, bond2);

            Assert.IsNotNull(difference);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Compare two <see cref="IChemObject"/> classes and return the difference as an <see cref="IDifference"/>.
        /// </summary>
        /// <param name="first">the first of the two classes to compare</param>
        /// <param name="second">the second of the two classes to compare</param>
        /// <returns>an <see cref="IDifference"/> representation of the difference between the first and second <see cref="IChemObject"/>.</returns>
        public static IDifference Difference(IChemObject first, IChemObject second)
        {
            if (!(first is ILonePair && second is ILonePair))
            {
                return(null);
            }
            ILonePair       firstB    = (ILonePair)first;
            ILonePair       secondB   = (ILonePair)second;
            IDifferenceList totalDiff = new ChemObjectDifference("LonePairDiff");

            totalDiff.AddChild(AtomDiff.Difference(firstB.Atom, secondB.Atom));
            totalDiff.AddChild(ElectronContainerDiff.Difference(first, second));
            if (totalDiff.ChildCount() > 0)
            {
                return(totalDiff);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 12
0
        public void TestDiff()
        {
            var m_carbon = new Mock <IAtom>(); IAtom carbon = m_carbon.Object;
            var m_oxygen = new Mock <IAtom>(); IAtom oxygen = m_oxygen.Object;

            m_carbon.SetupGet(n => n.Symbol).Returns("C");
            m_oxygen.SetupGet(n => n.Symbol).Returns("O");

            var m_bond1 = new Mock <ILonePair>(); ILonePair bond1 = m_bond1.Object;
            var m_bond2 = new Mock <ILonePair>(); ILonePair bond2 = m_bond2.Object;

            m_bond1.SetupGet(n => n.Atom).Returns(carbon);
            m_bond2.SetupGet(n => n.Atom).Returns(oxygen);

            string result = LonePairDiff.Diff(bond1, bond2);

            Assert.IsNotNull(result);
            Assert.AreNotSame(0, result.Length);
            AssertContains(result, "LonePairDiff");
            AssertContains(result, "AtomDiff");
            AssertContains(result, "C/O");
        }
Ejemplo n.º 13
0
 public static bool replaceAtomByAtom(IAtomContainer container, IAtom atom, IAtom newAtom)
 {
     if (!container.contains(atom))
     {
         // it should complain
         return(false);
     }
     else
     {
         container.setAtomAt(container.getAtomNumber(atom), newAtom);
         IElectronContainer[] electronContainers = container.ElectronContainers;
         for (int i = 0; i < electronContainers.Length; i++)
         {
             if (electronContainers[i] is IBond)
             {
                 IBond bond = (IBond)electronContainers[i];
                 if (bond.contains(atom))
                 {
                     for (int j = 0; j < bond.AtomCount; j++)
                     {
                         if (atom.Equals(bond.getAtomAt(j)))
                         {
                             bond.setAtomAt(newAtom, j);
                         }
                     }
                 }
             }
             else if (electronContainers[i] is ILonePair)
             {
                 ILonePair lonePair = (ILonePair)electronContainers[i];
                 if (atom.Equals(lonePair.Atom))
                 {
                     lonePair.Atom = newAtom;
                 }
             }
         }
         return(true);
     }
 }
Ejemplo n.º 14
0
 public bool Contains(ILonePair lonePair)
 => false;