55 lines
1.9 KiB
C#
55 lines
1.9 KiB
C#
using System;
|
|
using NUnit.Framework;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Algorithms.Tests.Graph
|
|
{
|
|
[TestFixture]
|
|
public class Dijkstra
|
|
{
|
|
static object[] TestCasesForDijkstra =
|
|
{
|
|
new object[]
|
|
{
|
|
5, false, 1, 5, new List<Tuple<int, int, int>> {
|
|
new Tuple<int, int, int>(1, 2, 2),
|
|
new Tuple<int, int, int>(2, 5, 5),
|
|
new Tuple<int, int, int>(2, 3, 4),
|
|
new Tuple<int, int, int>(1, 4, 1),
|
|
new Tuple<int, int, int>(4, 3, 3),
|
|
new Tuple<int, int, int>(3, 5, 1)
|
|
},
|
|
5
|
|
},
|
|
new object[]
|
|
{
|
|
5, true, 1, 5, new List<Tuple<int, int, int>> {
|
|
new Tuple<int, int, int>(1, 2, 2),
|
|
new Tuple<int, int, int>(2, 5, 8),
|
|
new Tuple<int, int, int>(2, 3, 4),
|
|
new Tuple<int, int, int>(4, 1, 1),
|
|
new Tuple<int, int, int>(3, 4, 3),
|
|
new Tuple<int, int, int>(3, 5, 1)
|
|
},
|
|
7
|
|
},
|
|
new object[]
|
|
{
|
|
3, false, 1, 3, new List<Tuple<int, int, int>> {
|
|
new Tuple<int, int, int>(1, 2, 1)
|
|
},
|
|
-1
|
|
},
|
|
};
|
|
|
|
[TestCaseSource(nameof(TestCasesForDijkstra))]
|
|
public void TestDijkstra_ShouldGetExpectedResult(int totalNodes, bool isDirected, int source, int destination, List<Tuple<int, int, int>> edges, int expected)
|
|
{
|
|
var result = Algorithms.Graph.Dijkstra.RunDijkstra(totalNodes, isDirected, source, destination, edges);
|
|
int distance = (int)result.GetType().GetProperty("distance").GetValue(result, null);
|
|
|
|
Assert.AreEqual(expected, distance);
|
|
}
|
|
}
|
|
}
|