public void ErrorCase_ReturnsValue_7() { var biconnectedComponents = new BiconnectedComponents(_basicWorldV2); var valid = biconnectedComponents.GetValidPlacesForMaxPath(0, 24); Assert.IsTrue(valid[0]); Assert.IsTrue(valid[1]); Assert.IsTrue(valid[2]); Assert.IsTrue(valid[3]); Assert.IsFalse(valid[4]); Assert.IsTrue(valid[5]); Assert.IsTrue(valid[6]); Assert.IsTrue(valid[7]); Assert.IsTrue(valid[8]); Assert.IsFalse(valid[9]); Assert.IsTrue(valid[10]); Assert.IsTrue(valid[11]); Assert.IsTrue(valid[12]); Assert.IsTrue(valid[13]); Assert.IsFalse(valid[14]); Assert.IsTrue(valid[15]); Assert.IsTrue(valid[16]); Assert.IsTrue(valid[17]); Assert.IsTrue(valid[18]); Assert.IsFalse(valid[19]); Assert.IsTrue(valid[20]); Assert.IsTrue(valid[21]); Assert.IsTrue(valid[22]); Assert.IsTrue(valid[23]); Assert.IsTrue(valid[24]); }
public void GetValidPlacesForMaxPath_CheckStepsForBCCH_try1step1() { var biconnectedComponents = new BiconnectedComponents(_basicWorldT1S1); var valid = biconnectedComponents.GetValidPlacesForMaxPath(1, 24); Assert.IsFalse(valid[0]); Assert.IsTrue(valid[1]); Assert.IsTrue(valid[2]); Assert.IsTrue(valid[3]); Assert.IsTrue(valid[4]); Assert.IsTrue(valid[5]); Assert.IsTrue(valid[6]); Assert.IsFalse(valid[7]); Assert.IsTrue(valid[8]); Assert.IsTrue(valid[9]); Assert.IsTrue(valid[10]); Assert.IsTrue(valid[11]); Assert.IsFalse(valid[12]); Assert.IsTrue(valid[13]); Assert.IsTrue(valid[14]); Assert.IsTrue(valid[15]); Assert.IsTrue(valid[16]); Assert.IsFalse(valid[17]); Assert.IsTrue(valid[18]); Assert.IsTrue(valid[19]); Assert.IsTrue(valid[20]); Assert.IsTrue(valid[21]); Assert.IsTrue(valid[22]); Assert.IsTrue(valid[23]); Assert.IsTrue(valid[24]); }
public void GetValidPlacesForMaxPath_AlmostAllBlocks_AreAllValid() { var biconnectedComponents = new BiconnectedComponents(_basicWorldV1); var valid = biconnectedComponents.GetValidPlacesForMaxPath(1, 11); Assert.IsFalse(valid[0]); Assert.IsTrue(valid[1]); Assert.IsTrue(valid[2]); Assert.IsTrue(valid[3]); Assert.IsTrue(valid[4]); Assert.IsFalse(valid[5]); Assert.IsFalse(valid[6]); Assert.IsFalse(valid[7]); Assert.IsTrue(valid[8]); Assert.IsTrue(valid[9]); Assert.IsTrue(valid[10]); Assert.IsTrue(valid[11]); Assert.IsFalse(valid[12]); Assert.IsTrue(valid[13]); Assert.IsTrue(valid[14]); Assert.IsTrue(valid[15]); Assert.IsTrue(valid[16]); Assert.IsFalse(valid[17]); Assert.IsTrue(valid[18]); Assert.IsTrue(valid[19]); Assert.IsTrue(valid[20]); Assert.IsTrue(valid[21]); Assert.IsTrue(valid[22]); Assert.IsTrue(valid[23]); Assert.IsTrue(valid[24]); }
public void CutPoints_AreAllValid_Count3() { var biconnectedComponents = new BiconnectedComponents(_basicWorldV3); Assert.AreEqual(4, biconnectedComponents.CutPoints.Count); Assert.IsTrue(biconnectedComponents.CutPoints.Contains(1)); Assert.IsTrue(biconnectedComponents.CutPoints.Contains(2)); Assert.IsTrue(biconnectedComponents.CutPoints.Contains(11)); Assert.IsTrue(biconnectedComponents.CutPoints.Contains(12)); }
private void CalculateBiconnectedComponents(IGraph graph) { var result = new BiconnectedComponents().Run(graph); if (result.Components.Count > 0) { // generate a color array var colors = GenerateColors(false); // sets the style/tag for the edges for (var i = 0; i < result.Components.Count; i++) { var component = result.Components[i]; var color = colors[i]; component.Edges.ForEach(edge => { InitializeTag(edge).CurrentColor = color; }); component.Nodes.ForEach(node => { InitializeTag(node).CurrentColor = color; }); } } }
static void Main(string[] args) { if (args.Length == 0) { WriteOutRelevantArguments(); return; } Dictionary <string, string> splitedArgs = ConsoleAppHelper.SplitArguments(args); LoadDefaultArguments(splitedArgs); if (!ValidArguments(splitedArgs)) { return; } _numOfGridFiles = int.Parse(splitedArgs["num"]); _retries = int.Parse(splitedArgs["retries"]); bool oneBcc = bool.Parse(splitedArgs["one-bcc"]); GridBase generator; switch (splitedArgs["type"]) { case "basic": generator = new BasicGenerator(splitedArgs); break; case "rooms": generator = new RoomsGenerator(splitedArgs); break; case "alternate": generator = new AlternateGenerator(splitedArgs); break; default: Console.WriteLine($"Type \"{splitedArgs["type"]}\" not supported!"); return; } List <string> createdFiles = new List <string>(); for (int gridFileId = 1; gridFileId <= _numOfGridFiles; gridFileId++) { int retryIterationsLeft = _retries; while (retryIterationsLeft > 0) { generator.InitBoard(); generator.AddBlockedLocationsStartAndGoal(); if (generator.GoalReachable()) { string outFileContent = generator.GetGrid(); string outFileName = generator.GetFileName(gridFileId, _numOfGridFiles); if (oneBcc) { World w = new World(outFileContent, new NoneHeuristic()); BiconnectedComponents bcc = new BiconnectedComponents(w); if (bcc.Blocks.Count != 1) //One block that contains the start& end { retryIterationsLeft--; continue; } if (!AllFreeAreInThisBlock(w, bcc.Blocks.First.Value)) //check that there are no free spots that are not reachable { retryIterationsLeft--; continue; } } File.WriteAllText(outFileName, outFileContent, Encoding.ASCII); createdFiles.Add(outFileName); break; } retryIterationsLeft--; } if (retryIterationsLeft == 0) { Console.WriteLine($"Couldn't build map for {_retries} times - Quiting and removing files created in this session if any"); foreach (var createdFile in createdFiles) { File.Delete(createdFile); } return; } } }
public void BlocksCount_ReturnsValue_7() { var biconnectedComponents = new BiconnectedComponents(_basicWorldV1); Assert.AreEqual(7, biconnectedComponents.Blocks.Count); }
public void Constructor_ReturnsValue_NotNull() { var biconnectedComponents = new BiconnectedComponents(_basicWorldV1); Assert.IsNotNull(biconnectedComponents); }