public void MixedConnections() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { Kodar, SBTech }); companyGraph.Add(SBTech, new List <Company> { MentorMate, VIK }); companyGraph.Add(MentorMate, new List <Company> { Zdravkova }); companyGraph.Add(Non, new List <Company> { Zdravkova }); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(VIK, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(VIK, MentorMate), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, MentorMate), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(MentorMate, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(MentorMate, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(MentorMate, Zdravkova), true); }
public void InGraphButNoConnection() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { }); companyGraph.Add(SBTech, new List <Company> { }); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(VIK, SBTech), false); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(VIK, SBTech), false); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, SBTech), false); }
public void SingleCompanyInGraph() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { }); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(VIK, VIK), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(VIK, VIK), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, VIK), true); }
public void RemovingACompany() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { Kodar }); companyGraph.Add(Kodar, new List <Company> { SBTech }); companyGraph.Add(SBTech, new List <Company> { MentorMate }); companyGraph.Add(MentorMate, new List <Company> { Zdravkova }); companyGraph.Add(Zdravkova, new List <Company> { Non }); companyGraph.Remove(SBTech); companyGraph.Add(Unconnected, new List <Company> { }); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(VIK, Non), false); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(VIK, Non), false); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, Non), false); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(MentorMate, Non), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(MentorMate, Non), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(MentorMate, Non), true); }
public void ShortestPathInLinearGraph() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { Kodar }); companyGraph.Add(Kodar, new List <Company> { SBTech }); companyGraph.Add(SBTech, new List <Company> { MentorMate }); companyGraph.Add(MentorMate, new List <Company> { Zdravkova }); companyGraph.Add(Zdravkova, new List <Company> { Non }); companyGraph.Add(Unconnected, new List <Company> { }); List <string> shortestPath = new List <string> { VIK.Name, Kodar.Name, SBTech.Name, MentorMate.Name, Zdravkova.Name, Non.Name }; Assert.AreEqual(companyGraph.FindShortestPath(Non, VIK), shortestPath); }
public void ShortestPathIsCorrectAfterRemovingACompany() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { Kodar, SBTech, MentorMate }); companyGraph.Add(Kodar, new List <Company> { Zdravkova }); companyGraph.Add(SBTech, new List <Company> { Zdravkova }); companyGraph.Add(MentorMate, new List <Company> { Zdravkova }); companyGraph.Add(Zdravkova, new List <Company> { Non }); companyGraph.Add(MentorMate, new List <Company> { Non }); companyGraph.Remove(MentorMate); List <string> shortestPath = new List <string> { Zdravkova.Name, SBTech.Name, VIK.Name }; List <string> shortestPathToNon = new List <string> { Non.Name, Zdravkova.Name, SBTech.Name, VIK.Name }; Assert.AreEqual(companyGraph.FindShortestPath(VIK, Zdravkova), shortestPath); Assert.AreEqual(companyGraph.FindShortestPath(VIK, Non), shortestPathToNon); }
public void ManyCompaniesToOneFromDifferentConnections() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { Kodar, SBTech, MentorMate }); companyGraph.Add(Kodar, new List <Company> { Zdravkova }); companyGraph.Add(SBTech, new List <Company> { Zdravkova }); companyGraph.Add(MentorMate, new List <Company> { Zdravkova }); companyGraph.Add(Zdravkova, new List <Company> { Non }); companyGraph.Add(MentorMate, new List <Company> { Non }); List <string> shortestPath = new List <string> { Zdravkova.Name, MentorMate.Name, VIK.Name }; List <string> shortestPathToNon = new List <string> { Non.Name, MentorMate.Name, VIK.Name }; Assert.AreEqual(companyGraph.FindShortestPath(VIK, Zdravkova), shortestPath); Assert.AreEqual(companyGraph.FindShortestPath(VIK, Non), shortestPathToNon); }
public void BranchedConnections() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { Kodar }); companyGraph.Add(VIK, new List <Company> { SBTech }); companyGraph.Add(VIK, new List <Company> { MentorMate }); companyGraph.Add(SBTech, new List <Company> { Zdravkova }); companyGraph.Add(SBTech, new List <Company> { Non }); companyGraph.Add(SBTech, new List <Company> { Tesla }); companyGraph.Add(Unconnected, new List <Company> { }); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(VIK, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(VIK, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(MentorMate, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(MentorMate, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(MentorMate, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(Unconnected, Zdravkova), false); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(Unconnected, Zdravkova), false); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(Unconnected, Zdravkova), false); }
public void ShortestPathInBranchedGraph() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { Kodar, SBTech, MentorMate }); companyGraph.Add(SBTech, new List <Company> { Zdravkova, }); companyGraph.Add(SBTech, new List <Company> { Tesla }); companyGraph.Add(Tesla, new List <Company> { Non }); companyGraph.Add(Kodar, new List <Company> { Zdravkova }); companyGraph.Add(Zdravkova, new List <Company> { Non }); companyGraph.Add(MentorMate, new List <Company> { Non }); companyGraph.FindShortestPath(VIK, Non); companyGraph.Add(Unconnected, new List <Company> { }); List <string> shortestPath = new List <string> { Non.Name, MentorMate.Name, VIK.Name }; Assert.AreEqual(companyGraph.FindShortestPath(VIK, Non), shortestPath); }
public void LinearConnections() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { Kodar }); companyGraph.Add(Kodar, new List <Company> { SBTech }); companyGraph.Add(SBTech, new List <Company> { MentorMate }); companyGraph.Add(MentorMate, new List <Company> { Zdravkova }); companyGraph.Add(Zdravkova, new List <Company> { Non }); companyGraph.Add(Unconnected, new List <Company> { }); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(Non, VIK), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(Non, VIK), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(Non, VIK), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(Zdravkova, Kodar), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(Zdravkova, Kodar), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(Zdravkova, Kodar), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(Zdravkova, Unconnected), false); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(Zdravkova, Unconnected), false); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(Zdravkova, Unconnected), false); }
public void ManyCompaniesToOneFromDifferentConnections() { companyGraph = new CompanyGraph.CompanyGraph(); companyGraph.Add(VIK, new List <Company> { Kodar, SBTech, MentorMate }); companyGraph.Add(Kodar, new List <Company> { Zdravkova }); companyGraph.Add(SBTech, new List <Company> { Zdravkova }); companyGraph.Add(MentorMate, new List <Company> { Zdravkova }); companyGraph.Add(Zdravkova, new List <Company> { Non }); companyGraph.Add(MentorMate, new List <Company> { Non }); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(VIK, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(VIK, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, Zdravkova), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(VIK, Non), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirst(Kodar, Non), true); Assert.AreEqual(companyGraph.AreConnectedBreadthFirst(Kodar, Non), true); Assert.AreEqual(companyGraph.AreConnectedDepthFirstIterative(Kodar, Non), true); }
static void Main(string[] args) { Company VIK = new Company() { ID = 1, Name = "VIK" }; Company Kodar = new Company() { ID = 2, Name = "Kodar" }; Company SBTech = new Company() { ID = 3, Name = "SB-Tech" }; Company MentorMate = new Company() { ID = 4, Name = "MentorMate" }; Company Zdravkova = new Company() { ID = 5, Name = "Zdravkova" }; Company Non = new Company() { ID = 6, Name = "Non" }; Company Tesla = new Company() { ID = 7, Name = "Tesla" }; Company Unconnected = new Company { ID = 8, Name = "Unconnected" }; CompanyGraph companyGraph = new CompanyGraph(); companyGraph.Add(VIK, new List <Company> { Kodar, SBTech, MentorMate }); companyGraph.Add(SBTech, new List <Company> { Zdravkova, }); companyGraph.Add(SBTech, new List <Company> { Tesla }); companyGraph.Add(Tesla, new List <Company> { Non }); companyGraph.Add(Kodar, new List <Company> { Zdravkova }); companyGraph.Add(Zdravkova, new List <Company> { Non }); companyGraph.Add(MentorMate, new List <Company> { Non }); Console.WriteLine(); companyGraph.FindShortestPath(VIK, VIK); companyGraph.Add(Unconnected, new List <Company> { }); List <string> shortestPath = new List <string> { Non.Name, MentorMate.Name, VIK.Name }; }