Executed features | Passed | Failures | Errors | Skipped | Success rate | Time |
---|---|---|---|---|---|---|
1 | 0 | 1 | 0 | 0 | 0.0% | 0.037 seconds |
Dijkstra's Algorithm
Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph
should find a route for a simple graph
Return
(0.016 seconds)
|
|||||||||||||||||||||
Given:
|
def graph = Graph.of([ A: [B: 7, C: 2], B: [A: 3, C: 5], C: [A: 1, B: 3] ]) |
||||||||||||||||||||
When:
|
def path = algorithm.findPath(graph, source, target) def time = graph.getDistance(path) |
||||||||||||||||||||
Then:
|
path == fastestPath // line 29 time == fastestTime |
||||||||||||||||||||
Examples:
|
|
2/3 passed
|
|||||||||||||||||||
The following problems occurred:
|
|||||||||||||||||||||
should find a route for a medium graph
Return
|
|||||||||||||||||||||
Given:
|
def graph = Graph.of([ A: [B: 5], B: [A: 5, C: 10], C: [B: 20, D: 5], D: [E: 5], E: [B: 5] ]) |
||||||||||||||||||||
When:
|
def path = algorithm.findPath(graph, source, target) |
||||||||||||||||||||
Then:
|
path == fastest |
||||||||||||||||||||
And:
|
graph.getDistance(path) == time as double |
||||||||||||||||||||
should find a route for a complex graph
Return
|
|||||||||||||||||||||
Given:
|
def graph = Graph.of([ A: [B: 5, H: 2], B: [A: 5, C: 7], C: [B: 7, D: 3, G: 4], D: [C: 20, E: 4], E: [F: 5], F: [G: 6], G: [C: 4], H: [G: 3] ]) |
||||||||||||||||||||
When:
|
def path = algorithm.findPath(graph, source, target) |
||||||||||||||||||||
Then:
|
path == fastest |
||||||||||||||||||||
And:
|
graph.getDistance(path) == time as double |
||||||||||||||||||||
should thrown NPE for an empty graph
Return
|
|||||||||||||||||||||
Given:
|
def graph = Graph.of([:]) |
||||||||||||||||||||
When:
|
algorithm.findPath(graph, 'A', 'B') |
||||||||||||||||||||
Then:
|
thrown NullPointerException |
||||||||||||||||||||
should return an empty path if can't find a route
Return
|
|||||||||||||||||||||
Given:
|
a simple graph with no edge between nodes
|
||||||||||||||||||||
def graph = Graph.of([A: [:], B: [:]]) |
|||||||||||||||||||||
When:
|
def path = algorithm.findPath(graph, 'A', 'B') |
||||||||||||||||||||
Then:
|
path == [] |