Clusterizator.Krab.GraphManager.Connect C# (CSharp) Method

Connect() public method

Nodes connection method.
public Connect ( int firstIndex, int secondIndex ) : void
firstIndex int /// First node index. ///
secondIndex int /// Second node index. ///
return void
        public void Connect(int firstIndex, int secondIndex)
        {
            // if nodes are already in one group
            if ((Elements[firstIndex].TaxonNumber == Elements[secondIndex].TaxonNumber) && (Elements[firstIndex].TaxonNumber != 0))
            {
                return;
            }

            // if both nodes doesn't belong to any group
            if ((Elements[firstIndex].TaxonNumber == 0) && (Elements[secondIndex].TaxonNumber == 0))
            {
                // creating new group
                Elements[firstIndex].TaxonNumber = GetNextTaxonNumber();
                Elements[secondIndex].TaxonNumber = Elements[firstIndex].TaxonNumber;
                Connections[SearchConnection(firstIndex, secondIndex)].Connected = true;
            }
            else if (Elements[firstIndex].TaxonNumber == 0)
            {
                // if only first element doesn't belong to any group connecting it to the existing group
                Elements[firstIndex].TaxonNumber = Elements[secondIndex].TaxonNumber;
                Connections[SearchConnection(firstIndex, secondIndex)].Connected = true;
            }
            else if (Elements[secondIndex].TaxonNumber == 0)
            {
                // if only second element doesn't belong to any group connecting it to the existing group
                Elements[secondIndex].TaxonNumber = Elements[firstIndex].TaxonNumber;
                Connections[SearchConnection(firstIndex, secondIndex)].Connected = true;
            }
            else if (Elements[firstIndex].TaxonNumber > Elements[secondIndex].TaxonNumber)
            {
                // if group of first element has bigger number then we renumber it
                Renumber(firstIndex, Elements[secondIndex].TaxonNumber);
                Connections[SearchConnection(firstIndex, secondIndex)].Connected = true;
            }
            else if (Elements[secondIndex].TaxonNumber > Elements[firstIndex].TaxonNumber)
            {
                // if group of second element has bigger number then we renumber it
                Renumber(secondIndex, Elements[firstIndex].TaxonNumber);
                Connections[SearchConnection(firstIndex, secondIndex)].Connected = true;
            }
        }

Usage Example

 public void BothConnectionGraphTest()
 {
     var connector = new GraphManager(connectionsList, elementsList);
     connector.Connect(1, 5);
     Assert.IsTrue(connectionsList[8].Connected);
     Assert.AreEqual(1, elementsList[5].TaxonNumber);
     Assert.AreEqual(1, elementsList[1].TaxonNumber);
     Assert.AreEqual(1, elementsList[4].TaxonNumber);
     Assert.AreEqual(1, elementsList[5].TaxonNumber);
 }
All Usage Examples Of Clusterizator.Krab.GraphManager::Connect