public void TryToAttachDefinitelyTest()
        {
            Molecule mTo, mAttach;

            mTo = mZero;
            mAttach = new Molecule(habitat);
            mAttach.Position = mTo.Position.PointOfAngle(Molecule.TETRAHEDRON_SITE, Math.PI * 5 / 6);

            TryToAttachDefinitelyTest(mTo, mAttach, 1, BoundType.II);

            //------

            mTo = mAttach;
            mAttach = new Molecule(habitat);
            mAttach.Position = mTo.Position.PointOfAngle(Molecule.TETRAHEDRON_SITE, Math.PI);

            TryToAttachDefinitelyTest(mTo, mAttach, 0, BoundType.I);

            //------

            mTo = mAttach;
            mAttach = new Molecule(habitat);
            mAttach.Position = mTo.Position.PointOfAngle(Molecule.TETRAHEDRON_SITE, 3 * Math.PI / 2);

            TryToAttachDefinitelyTest(mTo, mAttach, 2, BoundType.II);

            //------

            mTo = mAttach;
            mAttach = new Molecule(habitat);
            mAttach.Position = mTo.Position.PointOfAngle(Molecule.TETRAHEDRON_SITE, 3 * Math.PI / 2);

            TryToAttachDefinitelyTest(mTo, mAttach, 1, BoundType.I);

            //------

            mTo = mAttach;
            mAttach = new Molecule(habitat);
            mAttach.Position = mTo.Position.PointOfAngle(Molecule.TETRAHEDRON_SITE, 11 * Math.PI / 6);

            Assert.AreEqual(5, mAttach.Position.TetrahedronPart(mTo.Position));

            Assert.AreEqual(0, mTo.FreeBound(mAttach));

            TryToAttachDefinitelyTest(mTo, mAttach, 0, BoundType.II);

            Assert.AreEqual(2, mZero.GetBoundNr(mAttach));

            Assert.AreEqual(2, mAttach.GetBoundNr(mZero));
        }
        public void TryToAttachDefinitelyTest(Molecule mTo, Molecule mAttach, int boundNr_expected, BoundType boudType_expected)
        {
            mAttach.TryToAttachDefinitely(mTo);

            Assert.AreEqual(boundNr_expected, mTo.GetBoundNr(mAttach));

            Assert.AreEqual(boundNr_expected, mAttach.GetBoundNr(mTo));

            Assert.AreEqual(boudType_expected, mAttach.BoundType);

            var poz_expected = mTo.BoundPosition(boundNr_expected);

            AssertExtensions.AreAlmostEqual(poz_expected, mAttach.Position);

            // Assert.AreEqual(tetraNr_expected, mAttach.Position.TetrahedronPart(mTo.Position));
        }