65 lines
2.1 KiB
C#
65 lines
2.1 KiB
C#
|
using NUnit.Framework;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
|
|||
|
namespace Algorithms.Tests.Graph
|
|||
|
{
|
|||
|
[TestFixture]
|
|||
|
public class FloydWarshallAlgorithm
|
|||
|
{
|
|||
|
static object[] TestCasesForAllPaiShortestPath =
|
|||
|
{
|
|||
|
new object[]
|
|||
|
{
|
|||
|
4,
|
|||
|
true,
|
|||
|
new List<Tuple<int, int, int>>()
|
|||
|
{
|
|||
|
new Tuple<int, int, int>(1, 4, 10),
|
|||
|
new Tuple<int, int, int>(1, 2, 5),
|
|||
|
new Tuple<int, int, int>(2, 3, 3),
|
|||
|
new Tuple<int, int, int>(3, 4, 1)
|
|||
|
},
|
|||
|
"0 5 8 9 INF 0 3 4 INF INF 0 1 INF INF INF 0"
|
|||
|
},
|
|||
|
|
|||
|
new object[]
|
|||
|
{
|
|||
|
4,
|
|||
|
false,
|
|||
|
new List<Tuple<int, int, int>>()
|
|||
|
{
|
|||
|
new Tuple<int, int, int>(1, 4, 10),
|
|||
|
new Tuple<int, int, int>(1, 2, 5),
|
|||
|
new Tuple<int, int, int>(2, 3, 3),
|
|||
|
new Tuple<int, int, int>(3, 4, 1)
|
|||
|
},
|
|||
|
"0 5 8 9 5 0 3 4 8 3 0 1 9 4 1 0"
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
[TestCaseSource(nameof(TestCasesForAllPaiShortestPath))]
|
|||
|
public void TestFloydWarshallAlgorithm_ShouldGetExpectedResult(int totalNode, bool isDirected, List<Tuple<int, int, int>> edges, string expected)
|
|||
|
{
|
|||
|
var results = Algorithms.Graph.FloydWarshallAlgorithm.AllPairShortestPath(totalNode, isDirected, edges);
|
|||
|
string distances = "";
|
|||
|
const int INFINITY = (int)1e9;
|
|||
|
|
|||
|
for (int i = 1; i <= totalNode; i++)
|
|||
|
{
|
|||
|
for (int j = 1; j <= totalNode; j++)
|
|||
|
{
|
|||
|
if (!(i == 1 && j == 1))
|
|||
|
{
|
|||
|
distances += " ";
|
|||
|
}
|
|||
|
|
|||
|
distances += results[i, j] >= INFINITY ? "INF" : results[i, j].ToString();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
Assert.AreEqual(expected, distances);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|