public void Run(string inputFileName, string outputFileName) { var lines = File.ReadAllLines(inputFileName); var graph = new Graph(); graph.Parse(lines, true); var result = graph.Tarjan(); File.WriteAllLines(outputFileName, result.Select(x => x.Label)); }
public void Tarjans_Case1() { // Assign var lines = new[] { "visa foreignpassport", "visa hotel", "visa bankstatement", "bankstatement nationalpassport", "hotel creditcard", "creditcard nationalpassport", "nationalpassport birthcertificate", "foreignpassport nationalpassport", "foreignpassport militarycertificate", "militarycertificate nationalpassport" }; var graph = new Graph(); var expectedStrings = new[] { "birthcertificate", "nationalpassport", "bankstatement", "creditcard", "hotel", "militarycertificate", "foreignpassport", "visa" }; var expected = expectedStrings.Aggregate((x, y) => x + Environment.NewLine + y); // Act graph.Parse(lines, true); var result = graph.Tarjan(); var actual = result.Select(x => x.Label).Aggregate((x, y) => x + Environment.NewLine + y); // Assert Assert.AreEqual(expected, actual); }
public void Tarjans_Case2() { // Assign var lines = new[] { "visa foreignpassport" }; var graph = new Graph(); var expectedStrings = new[] { "foreignpassport", "visa" }; var expected = expectedStrings.Aggregate((x, y) => x + Environment.NewLine + y); // Act graph.Parse(lines, true); var result = graph.Tarjan(); var actual = result.Select(x => x.Label).Aggregate((x, y) => x + Environment.NewLine + y); // Assert Assert.AreEqual(expected, actual); }
public void Tarjans_Case3() { // Assign var lines = new[] { "cer03 cer09", "cer03 cer08", "cer03 cer07", "cer02 cer06", "cer02 cer05", "cer02 cer04", "cer01 cer03", "cer01 cer02" }; var graph = new Graph(); var expectedStrings = new[] { "cer07", "cer08", "cer09", "cer03", "cer04", "cer05", "cer06", "cer02", "cer01" }; var expected = expectedStrings.Aggregate((x, y) => x + Environment.NewLine + y); // Act graph.Parse(lines, true); var result = graph.Tarjan(); var actual = result.Select(x => x.Label).Aggregate((x, y) => x + Environment.NewLine + y); // Assert Assert.AreEqual(expected, actual); }
public void Tarjans_Case5() { // Assign var lines = new[] { "a b", "c d", "e f", "g h", "i j", "k l", "m n", "o p", "q r", "s t", "u v", "w x", "y z" }; var graph = new Graph(); var expectedStrings = new[] { "b", "a", "d", "c", "f", "e", "h", "g", "j", "i", "l", "k", "n", "m", "p", "o", "r", "q", "t", "s", "v", "u", "x", "w", "z", "y" }; var expected = expectedStrings.Aggregate((x, y) => x + Environment.NewLine + y); // Act graph.Parse(lines, true); var result = graph.Tarjan(); var actual = result.Select(x => x.Label).Aggregate((x, y) => x + Environment.NewLine + y); // Assert Assert.AreEqual(expected, actual); }
public void Tarjans_Case4() { // Assign var lines = new[] { "3a 4a", "3a 4b", "3b 4c", "3b 4d", "3c 4e", "3c 4f", "3d 4g", "3d 4h", "2a 3a", "2a 3b", "2b 3c", "2b 3d", "1a 2a", "1a 2b", "y z", "x v" }; var graph = new Graph(); var expectedStrings = new[] { "4b", "4a", "3a", "4d", "4c", "3b", "4f", "4e", "3c", "4h", "4g", "3d", "2a", "2b", "1a", "z", "y", "v", "x" }; var expected = expectedStrings.Aggregate((x, y) => x + Environment.NewLine + y); // Act graph.Parse(lines, true); var result = graph.Tarjan(); var actual = result.Select(x => x.Label).Aggregate((x, y) => x + Environment.NewLine + y); // Assert Assert.AreEqual(expected, actual); }