diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 7e20a16..2f05086 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -12,7 +12,8 @@
-
+
+
diff --git a/algorithm/build.gradle b/algorithm/build.gradle
index 828691e..fef3784 100644
--- a/algorithm/build.gradle
+++ b/algorithm/build.gradle
@@ -5,7 +5,7 @@ plugins {
}
group 'lv.id.jc'
-version '1.1'
+version '1.1-SNAPSHOT'
repositories {
mavenCentral()
diff --git a/algorithm/src/main/java/lv/id/jc/algorithm/graph/Graph.java b/algorithm/src/main/java/lv/id/jc/algorithm/graph/Graph.java
index 6ed2e9c..2b4de63 100644
--- a/algorithm/src/main/java/lv/id/jc/algorithm/graph/Graph.java
+++ b/algorithm/src/main/java/lv/id/jc/algorithm/graph/Graph.java
@@ -14,8 +14,22 @@
@FunctionalInterface
public interface Graph {
/**
- * The schema of this graph.
+ * Creates a Graph object by given schema.
+ *
+ * In a graph schema, each vertex is assigned an edge map.
+ * If the vertex has no edges, then it should be assigned an empty map.
*
+ * @param schema of the graph
+ * @param the type of vertex in this graph
+ * @return graph object with given schema
+ */
+ static Graph of(Map> schema) {
+ return () -> schema;
+ }
+
+ /**
+ * The schema of this graph.
+ *
* In a graph schema, each vertex is assigned an edge map.
* If the vertex has no edges, then it should be assigned an empty map.
*
@@ -54,18 +68,4 @@ default double getDistance(List path) {
.mapToDouble(Number::doubleValue)
.sum();
}
-
- /**
- * Creates a Graph object by given schema.
- *
- * In a graph schema, each vertex is assigned an edge map.
- * If the vertex has no edges, then it should be assigned an empty map.
- *
- * @param schema of the graph
- * @param the type of vertex in this graph
- * @return graph object with given schema
- */
- static Graph of(Map> schema) {
- return () -> schema;
- }
}
diff --git a/algorithm/src/main/java/lv/id/jc/algorithm/graph/SearchAlgorithm.java b/algorithm/src/main/java/lv/id/jc/algorithm/graph/SearchAlgorithm.java
index 79692d7..cf8f54f 100644
--- a/algorithm/src/main/java/lv/id/jc/algorithm/graph/SearchAlgorithm.java
+++ b/algorithm/src/main/java/lv/id/jc/algorithm/graph/SearchAlgorithm.java
@@ -5,8 +5,8 @@
/**
* A functional interface for graph search algorithm
*
- * @author Jegors ÄŒemisovs
* @param the type of vertex
+ * @author Jegors ÄŒemisovs
* @since 1.0
*/
@FunctionalInterface
@@ -14,7 +14,7 @@ public interface SearchAlgorithm {
/**
* Find the path from the source node to the target
*
- * @param graph The graph in which we search for the path
+ * @param graph The graph in which we search for the path
* @param source Search starting point identifier
* @param target Search finish point identifier
* @return Path found or empty list if path cannot be found
diff --git a/algorithm/src/test/groovy/lv/id/jc/graph/BreadthFirstSearchSpec.groovy b/algorithm/src/test/groovy/lv/id/jc/algorithm/graph/BreadthFirstSearchSpec.groovy
similarity index 77%
rename from algorithm/src/test/groovy/lv/id/jc/graph/BreadthFirstSearchSpec.groovy
rename to algorithm/src/test/groovy/lv/id/jc/algorithm/graph/BreadthFirstSearchSpec.groovy
index 7feffbd..d1ddaa8 100644
--- a/algorithm/src/test/groovy/lv/id/jc/graph/BreadthFirstSearchSpec.groovy
+++ b/algorithm/src/test/groovy/lv/id/jc/algorithm/graph/BreadthFirstSearchSpec.groovy
@@ -1,4 +1,4 @@
-package lv.id.jc.graph
+package lv.id.jc.algorithm.graph
import lv.id.jc.algorithm.graph.BreadthFirstSearch
import lv.id.jc.algorithm.graph.Graph
@@ -14,20 +14,20 @@ class BreadthFirstSearchSpec extends Specification {
def algorithm = new BreadthFirstSearch()
def 'should find a route for simple graph'() {
- given: 'A simple graph'
+ given:
def graph = Graph.of([
A: [B: 7, C: 2],
B: [A: 3, C: 5],
C: [A: 1, B: 3]
])
- when: 'we use Breadth First Search algorithm to find a path'
+ when:
def path = algorithm.findPath(graph, source, target)
- then: 'we get the shortest path'
+ then:
path == shortest
- and: 'the distance calculated correctly'
+ and:
graph.getDistance(path) == time as double
where:
@@ -39,7 +39,7 @@ class BreadthFirstSearchSpec extends Specification {
}
def 'should find a route for complex graph'() {
- given: 'A complex graph'
+ given:
def graph = Graph.of([
A: [B: 1],
B: [A: 1, D: 1],
@@ -48,13 +48,13 @@ class BreadthFirstSearchSpec extends Specification {
E: [F: 1],
F: [D: 1, E: 1]])
- when: 'we use Breadth First Search algorithm to find a path'
+ when:
def path = algorithm.findPath(graph, source, target)
- then: 'we get the shortest path'
+ then:
path == shortest
- and: 'the distance calculated correctly'
+ and:
graph.getDistance(path) == time as double
where:
@@ -72,13 +72,13 @@ class BreadthFirstSearchSpec extends Specification {
}
def 'should thrown NPE path for an empty graph'() {
- given: 'an empty graph'
+ given:
def graph = Graph.of([:])
- when: "we use Dijkstra's algorithm to find a path"
+ when:
algorithm.findPath(graph, 'A', 'B')
- then: 'the exception was thrown'
+ then:
thrown NullPointerException
}
@@ -86,10 +86,10 @@ class BreadthFirstSearchSpec extends Specification {
given: 'a simple graph with no edge between nodes'
def graph = Graph.of([A: [:], B: [:]])
- when: 'we use Breadth First Search algorithm to find a path'
+ when:
def path = algorithm.findPath(graph, 'A', 'B')
- then: 'we get an empty path'
+ then:
path == []
}
}
diff --git a/algorithm/src/test/groovy/lv/id/jc/graph/DijkstrasAlgorithmSpec.groovy b/algorithm/src/test/groovy/lv/id/jc/algorithm/graph/DijkstrasAlgorithmSpec.groovy
similarity index 80%
rename from algorithm/src/test/groovy/lv/id/jc/graph/DijkstrasAlgorithmSpec.groovy
rename to algorithm/src/test/groovy/lv/id/jc/algorithm/graph/DijkstrasAlgorithmSpec.groovy
index db283c6..ec6f6a1 100644
--- a/algorithm/src/test/groovy/lv/id/jc/graph/DijkstrasAlgorithmSpec.groovy
+++ b/algorithm/src/test/groovy/lv/id/jc/algorithm/graph/DijkstrasAlgorithmSpec.groovy
@@ -1,4 +1,4 @@
-package lv.id.jc.graph
+package lv.id.jc.algorithm.graph
import lv.id.jc.algorithm.graph.DijkstrasAlgorithm
import lv.id.jc.algorithm.graph.Graph
@@ -12,20 +12,20 @@ class DijkstrasAlgorithmSpec extends Specification {
def algorithm = new DijkstrasAlgorithm()
def 'should find a route for a simple graph'() {
- given: 'A simple graph'
+ given:
def graph = Graph.of([
A: [B: 7, C: 2],
B: [A: 3, C: 5],
C: [A: 1, B: 3]
])
- when: "we use Dijkstra's algorithm to find a path"
+ when:
def path = algorithm.findPath(graph, source, target)
- then: 'we get the fastest way'
+ then:
path == fastest
- and: 'the distance calculated correctly'
+ and:
graph.getDistance(path) == time as double
where:
@@ -37,7 +37,7 @@ class DijkstrasAlgorithmSpec extends Specification {
}
def 'should find a route for a medium graph'() {
- given: 'A medium graph'
+ given:
def graph = Graph.of([
A: [B: 5],
B: [A: 5, C: 10],
@@ -46,13 +46,13 @@ class DijkstrasAlgorithmSpec extends Specification {
E: [B: 5]
])
- when: "we use Dijkstra's algorithm to find a path"
+ when:
def path = algorithm.findPath(graph, source, target)
- then: 'we get the fastest way'
+ then:
path == fastest
- and: 'the distance calculated correctly'
+ and:
graph.getDistance(path) == time as double
where:
@@ -66,7 +66,7 @@ class DijkstrasAlgorithmSpec extends Specification {
}
def 'should find a route for a complex graph'() {
- given: 'A complex graph'
+ given:
def graph = Graph.of([
A: [B: 5, H: 2],
B: [A: 5, C: 7],
@@ -78,13 +78,13 @@ class DijkstrasAlgorithmSpec extends Specification {
H: [G: 3]
])
- when: "we use Dijkstra's algorithm to find a path"
+ when:
def path = algorithm.findPath(graph, source, target)
- then: 'we get the fastest way'
+ then:
path == fastest
- and: 'the distance calculated correctly'
+ and:
graph.getDistance(path) == time as double
where:
@@ -104,13 +104,13 @@ class DijkstrasAlgorithmSpec extends Specification {
}
def 'should thrown NPE for an empty graph'() {
- given: 'an empty graph'
+ given:
def graph = Graph.of([:])
- when: "we use Dijkstra's algorithm to find a path"
+ when:
algorithm.findPath(graph, 'A', 'B')
- then: 'the exception was thrown'
+ then:
thrown NullPointerException
}
@@ -118,10 +118,10 @@ class DijkstrasAlgorithmSpec extends Specification {
given: 'a simple graph with no edge between nodes'
def graph = Graph.of([A: [:], B: [:]])
- when: "we use Dijkstra's algorithm to find a path"
+ when:
def path = algorithm.findPath(graph, 'A', 'B')
- then: 'we get an empty path'
+ then:
path == []
}
}
diff --git a/algorithm/src/test/groovy/lv/id/jc/graph/GraphSpec.groovy b/algorithm/src/test/groovy/lv/id/jc/algorithm/graph/GraphSpec.groovy
similarity index 98%
rename from algorithm/src/test/groovy/lv/id/jc/graph/GraphSpec.groovy
rename to algorithm/src/test/groovy/lv/id/jc/algorithm/graph/GraphSpec.groovy
index 5d87b77..9e2bdb9 100644
--- a/algorithm/src/test/groovy/lv/id/jc/graph/GraphSpec.groovy
+++ b/algorithm/src/test/groovy/lv/id/jc/algorithm/graph/GraphSpec.groovy
@@ -1,4 +1,4 @@
-package lv.id.jc.graph
+package lv.id.jc.algorithm.graph
import lv.id.jc.algorithm.graph.Graph
import spock.lang.Narrative
diff --git a/algorithm/src/test/groovy/lv/id/jc/graph/SearchAlgorithmSpec.groovy b/algorithm/src/test/groovy/lv/id/jc/algorithm/graph/SearchAlgorithmSpec.groovy
similarity index 86%
rename from algorithm/src/test/groovy/lv/id/jc/graph/SearchAlgorithmSpec.groovy
rename to algorithm/src/test/groovy/lv/id/jc/algorithm/graph/SearchAlgorithmSpec.groovy
index e3b51a2..d88ec0f 100644
--- a/algorithm/src/test/groovy/lv/id/jc/graph/SearchAlgorithmSpec.groovy
+++ b/algorithm/src/test/groovy/lv/id/jc/algorithm/graph/SearchAlgorithmSpec.groovy
@@ -1,4 +1,4 @@
-package lv.id.jc.graph
+package lv.id.jc.algorithm.graph
import lv.id.jc.algorithm.graph.BreadthFirstSearch
import lv.id.jc.algorithm.graph.DijkstrasAlgorithm
@@ -16,7 +16,7 @@ class SearchAlgorithmSpec extends Specification {
def dijkstras = new DijkstrasAlgorithm()
def 'should find a route for a complex graph'() {
- given: 'A complex graph sample'
+ given:
def graph = Graph.of([
A: [B: 5, H: 2],
B: [A: 5, C: 7],
@@ -28,19 +28,19 @@ class SearchAlgorithmSpec extends Specification {
H: [G: 3]
])
- when: 'we use Breadth First Search algorithm for the first route'
+ when:
def routeOne = bfsAlgorithm.findPath(graph, source, target)
- and: 'we use Dijkstras algorithm for the second route'
+ and:
def routeTwo = dijkstras.findPath(graph, source, target)
- then: "the first route is the shortest"
+ then:
routeOne == shortest
- and: 'the second route is the fastest'
+ and:
routeTwo == fastest
- and: 'the distance calculated correctly'
+ and:
graph.getDistance(routeOne) == d1 as double
graph.getDistance(routeTwo) == d2 as double
diff --git a/algorithm/src/test/resources/SpockConfig.groovy b/algorithm/src/test/resources/SpockConfig.groovy
index 55671ba..db42b66 100644
--- a/algorithm/src/test/resources/SpockConfig.groovy
+++ b/algorithm/src/test/resources/SpockConfig.groovy
@@ -1,7 +1,7 @@
spockReports {
set(['com.athaydes.spockframework.report.showCodeBlocks' : true,
- 'com.athaydes.spockframework.report.outputDir' : 'docs/spock-reports',
+ 'com.athaydes.spockframework.report.outputDir' : '../docs/spock-reports',
'com.athaydes.spockframework.report.projectName' : 'Graph search algorithms',
'com.athaydes.spockframework.report.projectVersion' : 1.1,
'com.athaydes.spockframework.report.internal.HtmlReportCreator.enabled': true,
diff --git a/application/build.gradle b/application/build.gradle
deleted file mode 100644
index 7d38e08..0000000
--- a/application/build.gradle
+++ /dev/null
@@ -1,13 +0,0 @@
-plugins {
- id 'application'
-}
-
-dependencies {
- implementation project(':algorithm')
-}
-
-application {
- mainModule = 'lv.id.jc.application'
- mainClass = 'lv.id.jc.application.GraphApp'
- applicationDefaultJvmArgs = ['-Dgreeting.language=en']
-}
diff --git a/application/src/main/java/module-info.java b/application/src/main/java/module-info.java
deleted file mode 100644
index 1ffe06e..0000000
--- a/application/src/main/java/module-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-module lv.id.jc.application {
- requires lv.id.jc.algorithm.graph;
- exports lv.id.jc.application;
-}
\ No newline at end of file
diff --git a/docs/inspection/index.html b/docs/inspection/index.html
index f1d6f94..f6d64d7 100644
--- a/docs/inspection/index.html
+++ b/docs/inspection/index.html
@@ -1 +1 @@
-IntelliJ IDEA inspection report
'findPath' in 'lv.id.jc.algorithm.graph.BreadthFirstSearch<java.lang.String>' cannot be applied to '(lv.id.jc.algorithm.graph.Graph<java.lang.Object>, java.lang.String, java.lang.String)' (at line 32)
'findPath' in 'lv.id.jc.algorithm.graph.BreadthFirstSearch<java.lang.String>' cannot be applied to '(lv.id.jc.algorithm.graph.Graph<java.lang.Object>, java.lang.String, java.lang.String)' (at line 32)
public interface Graph in package lv.id.jc.algorithm.graph
No problems found
Location
public interface SearchAlgorithm in package lv.id.jc.algorithm.graph
No problems found
Location
public interface SearchAlgorithm in package lv.id.jc.algorithm.graph
No problems found
Location
public method List<T> findPath(Graph<T> graph, T source, T target) in interface SearchAlgorithm(lv.id.jc.algorithm.graph)
Problem synopsis
Method is never used as a member of this interface, but only as a member of the implementation class(es). The project will stay compilable if the method is removed from the interface.
Problem resolution
Safe delete
Comment out
Add as Entry Point
Uses the following
Graph(lv.id.jc.algorithm.graph) Has reachable implementation instantiations. 1 instantiation found in the project code.
Derived methods
List<T> findPath(Graph<T>, T, T)(lv.id.jc.algorithm.graph.BreadthFirstSearch) Not Reachable. 2 usages found in the project code.
List<T> findPath(Graph<T>, T, T)(lv.id.jc.algorithm.graph.DijkstrasAlgorithm) Not Reachable. 2 usages found in the project code.
'findPath' in 'lv.id.jc.algorithm.graph.BreadthFirstSearch<java.lang.String>' cannot be applied to '(lv.id.jc.algorithm.graph.Graph<java.lang.Object>, java.lang.String, java.lang.String)' (at line 32)
'findPath' in 'lv.id.jc.algorithm.graph.BreadthFirstSearch<java.lang.String>' cannot be applied to '(lv.id.jc.algorithm.graph.Graph<java.lang.Object>, java.lang.String, java.lang.String)' (at line 32)
public interface Graph in package lv.id.jc.algorithm.graph
No problems found
Location
public interface SearchAlgorithm in package lv.id.jc.algorithm.graph
No problems found
Location
public interface SearchAlgorithm in package lv.id.jc.algorithm.graph
No problems found
Location
public method List<T> findPath(Graph<T> graph, T source, T target) in interface SearchAlgorithm(lv.id.jc.algorithm.graph)
Problem synopsis
Method is never used as a member of this interface, but only as a member of the implementation class(es). The project will stay compilable if the method is removed from the interface.
Problem resolution
Safe delete
Comment out
Add as Entry Point
Uses the following
Graph(lv.id.jc.algorithm.graph) Has reachable implementation instantiations. 1 instantiation found in the project code.
Derived methods
List<T> findPath(Graph<T>, T, T)(lv.id.jc.algorithm.graph.BreadthFirstSearch) Not Reachable. 2 usages found in the project code.
List<T> findPath(Graph<T>, T, T)(lv.id.jc.algorithm.graph.DijkstrasAlgorithm) Not Reachable. 2 usages found in the project code.
\ No newline at end of file
diff --git a/docs/spock-reports/aggregated_report.json b/docs/spock-reports/aggregated_report.json
index 4672826..42b1f2e 100644
--- a/docs/spock-reports/aggregated_report.json
+++ b/docs/spock-reports/aggregated_report.json
@@ -1 +1 @@
-{"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":2,"totalFeatures":2,"passed":2,"successRate":1.0,"time":162},"title":"","narrative":""},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":46},"title":"Comparison of two algorithms","narrative":""},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":66},"title":"","narrative":""},"graph.GraphSpec":{"executedFeatures":["should calculate distance"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":19},"title":"","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":2,"totalFeatures":2,"passed":2,"successRate":1.0,"time":133},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":40},"title":"Comparison of two algorithms","narrative":""},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":67},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":125},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":2,"totalFeatures":2,"passed":2,"successRate":1.0,"time":115},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":43},"title":"Comparison of two algorithms","narrative":""},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":69},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":127},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":2,"totalFeatures":2,"passed":2,"successRate":1.0,"time":136},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":44},"title":"Comparison of two algorithms","narrative":""},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":80},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":112},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":2,"totalFeatures":2,"passed":2,"successRate":1.0,"time":204},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":61},"title":"Comparison of two algorithms","narrative":""},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":74},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":154},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should returns an empty path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":1,"skipped":0,"totalRuns":1,"totalFeatures":4,"passed":0,"successRate":0.0,"time":32},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":4,"passed":1,"successRate":1.0,"time":32},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":1,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":5,"passed":0,"successRate":0.0,"time":54},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":3,"passed":1,"successRate":1.0,"time":31},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":62},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":3,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":2,"successRate":0.4,"time":47},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":48},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":1,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":0,"successRate":0.0,"time":10},"title":"Comparison of two algorithms","narrative":""},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":3,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":2,"successRate":0.4,"time":96},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":69},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":69},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":31},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":47},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":16},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":69},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":31},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":69},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":16},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":3,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":0,"successRate":0.0,"time":62},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":1,"errors":4,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":0,"successRate":0.0,"time":46},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":54},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":1,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":0,"successRate":0.0,"time":0},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":78},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":84},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":85},"title":"Comparison of two algorithms","narrative":""},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":116},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":68},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":17},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":54},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":15},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":69},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should throw NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":1,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":4,"successRate":0.8,"time":32},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":53},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":16},"title":"Comparison of two algorithms","narrative":""},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path for an empty graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":1,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":5,"passed":0,"successRate":0.0,"time":47},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path for an empty graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":5,"passed":1,"successRate":1.0,"time":32},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":3,"totalFeatures":3,"passed":3,"successRate":1.0,"time":63},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path for an empty graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":31},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":47},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":16},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path for an empty graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":69},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path for an empty graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":16},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":47},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":16},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path for an empty graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":1,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":3,"successRate":0.75,"time":69},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path for an empty graph","should return an empty path if can't find a route"],"ignoredFeatures":[],"stats":{"failures":0,"errors":1,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":4,"successRate":0.8,"time":31},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":38},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":7},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route","should thrown NPE path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":63},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should thrown NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":32},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":37},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":15},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route","should thrown NPE path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":78},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should thrown NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":23},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":47},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":0},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route","should thrown NPE path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":69},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should thrown NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":31},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":70},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":15},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route","should thrown NPE path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":69},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should thrown NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":22},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":37},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":3},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route","should thrown NPE path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":71},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should thrown NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":23},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":45},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":11},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route","should thrown NPE path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":69},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should thrown NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":31},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":54},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":15},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route","should thrown NPE path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":54},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should thrown NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":16},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":53},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":15},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route","should thrown NPE path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":47},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should thrown NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":16},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":47},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":16},"title":"Comparison of two algorithms","narrative":""},"graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route","should thrown NPE path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":53},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should thrown NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":37},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":53},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":15},"title":"Comparison of two algorithms","narrative":""}}
\ No newline at end of file
+{"lv.id.jc.algorithm.graph.BreadthFirstSearchSpec":{"executedFeatures":["should find a route for complex graph","should find a route for simple graph","should return an empty path if can't find a route","should thrown NPE path for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":4,"totalFeatures":4,"passed":4,"successRate":1.0,"time":65},"title":"Breadth First Search Algorithm","narrative":"Breadth First Search algorithm for finding the shortest paths between nodes in a graph"},"lv.id.jc.algorithm.graph.DijkstrasAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph","should find a route for a medium graph","should find a route for a simple graph","should return an empty path if can't find a route","should thrown NPE for an empty graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":24},"title":"Dijkstra's Algorithm","narrative":"Dijkstra's algorithm is an algorithm for finding the fastest paths between nodes in a graph"},"lv.id.jc.algorithm.graph.GraphSpec":{"executedFeatures":["should be zero distance for an empty path","should be zero distance for any one node path","should calculate distance for a path","should return edges for a given node","should throw NPE for incorrect path"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":5,"totalFeatures":5,"passed":5,"successRate":1.0,"time":47},"title":"Generic Graph","narrative":"A generic implementation of Graph structure"},"lv.id.jc.algorithm.graph.SearchAlgorithmSpec":{"executedFeatures":["should find a route for a complex graph"],"ignoredFeatures":[],"stats":{"failures":0,"errors":0,"skipped":0,"totalRuns":1,"totalFeatures":1,"passed":1,"successRate":1.0,"time":12},"title":"Comparison of two algorithms","narrative":""}}
\ No newline at end of file
diff --git a/docs/spock-reports/index.html b/docs/spock-reports/index.html
index 2de51b9..de30a53 100644
--- a/docs/spock-reports/index.html
+++ b/docs/spock-reports/index.html
@@ -84,7 +84,7 @@
Specification run results
Specifications summary:
-
Created on Tue Jan 04 19:56:49 EET 2022 by jegors.cemisovs
+
Created on Thu Jan 06 23:11:33 EET 2022 by jegors.cemisovs