From 6173abbc476f17dae769afb2c6d42970e5ca6689 Mon Sep 17 00:00:00 2001 From: Gennady Date: Thu, 5 Sep 2019 22:27:45 +0400 Subject: [PATCH 1/5] feat(dijkstra): Add Dijkstra algorithm test --- dijkstra-algorythm/pom.xml | 15 +++++++ .../src/main/java/com/bobocode/GraphImpl.java | 28 +++++++++++++ .../java/com/bobocode/interfaces/Graph.java | 10 +++++ .../test/java/com/bobocode/GraphImplTest.java | 41 +++++++++++++++++++ pom.xml | 1 + 5 files changed, 95 insertions(+) create mode 100644 dijkstra-algorythm/pom.xml create mode 100644 dijkstra-algorythm/src/main/java/com/bobocode/GraphImpl.java create mode 100644 dijkstra-algorythm/src/main/java/com/bobocode/interfaces/Graph.java create mode 100644 dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java diff --git a/dijkstra-algorythm/pom.xml b/dijkstra-algorythm/pom.xml new file mode 100644 index 0000000..bec84d4 --- /dev/null +++ b/dijkstra-algorythm/pom.xml @@ -0,0 +1,15 @@ + + + + java-core-exercises + com.bobocode + 1.0-SNAPSHOT + + 4.0.0 + + dijkstra-algorythm + + + \ No newline at end of file diff --git a/dijkstra-algorythm/src/main/java/com/bobocode/GraphImpl.java b/dijkstra-algorythm/src/main/java/com/bobocode/GraphImpl.java new file mode 100644 index 0000000..ad01488 --- /dev/null +++ b/dijkstra-algorythm/src/main/java/com/bobocode/GraphImpl.java @@ -0,0 +1,28 @@ +package com.bobocode; + +import com.bobocode.interfaces.Graph; + +import java.util.Set; + +public class GraphImpl implements Graph { + + @Override + public void addNode(String nodeName) { + throw new UnsupportedOperationException("This method is not implemented yet"); // todo: implement this method + } + + @Override + public void addDestination(String nodeFromName, String nodeToName, int distance) { + throw new UnsupportedOperationException("This method is not implemented yet"); // todo: implement this method + } + + @Override + public int calculateShortestDistance(String nodeStart, String nodeEnd) { + throw new UnsupportedOperationException("This method is not implemented yet"); // todo: implement this method + } + + @Override + public Set calculateShortestPath(String nodeStart, String nodeEnd) { + throw new UnsupportedOperationException("This method is not implemented yet"); // todo: implement this method + } +} diff --git a/dijkstra-algorythm/src/main/java/com/bobocode/interfaces/Graph.java b/dijkstra-algorythm/src/main/java/com/bobocode/interfaces/Graph.java new file mode 100644 index 0000000..5ebc0f3 --- /dev/null +++ b/dijkstra-algorythm/src/main/java/com/bobocode/interfaces/Graph.java @@ -0,0 +1,10 @@ +package com.bobocode.interfaces; + +import java.util.Set; + +public interface Graph { + void addNode(String nodeName); + void addDestination(String nodeFromName, String nodeToName, int distance); + int calculateShortestDistance(String nodeStart, String nodeEnd); + Set calculateShortestPath(String nodeStart, String nodeEnd); +} diff --git a/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java b/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java new file mode 100644 index 0000000..9ebacfc --- /dev/null +++ b/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java @@ -0,0 +1,41 @@ +package com.bobocode; + +import com.bobocode.interfaces.Graph; +import org.junit.jupiter.api.Test; + +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class GraphImplTest { + private Graph graph = new GraphImpl(); + + @Test + public void testAddNodesIntoEmptyGraph() { + graph.addNode("nodeA"); + graph.addNode("nodeB"); + graph.addNode("nodeC"); + graph.addNode("nodeD"); + graph.addNode("nodeE"); + graph.addNode("nodeF"); + + graph.addDestination("nodeA", "nodeB", 2); + graph.addDestination("nodeA", "nodeC", 4); + graph.addDestination("nodeA", "nodeD", 5); + + graph.addDestination("nodeB", "nodeE", 7); + graph.addDestination("nodeB", "nodeC", 1); + + graph.addDestination("nodeC", "nodeD", 3); + graph.addDestination("nodeC", "nodeF", 4); + + graph.addDestination("nodeD", "nodeF", 2); + graph.addDestination("nodeE", "nodeF", 8); + + assertEquals(graph.calculateShortestDistance("nodeA", "nodeF"), 7); + assertEquals(graph.calculateShortestDistance("nodeA", "nodeE"), 9); + + assertEquals(graph.calculateShortestPath("nodeA", "nodeF"), Set.of("nodeA", "nodeD", "NodeF")); + } + +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 233439d..7347d44 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,7 @@ declarative-sum-of-squares crazy-lambdas crazy-optionals + dijkstra-algorythm pom From 0abe24c046beb520fc6eb168c0ea9a32002ee06f Mon Sep 17 00:00:00 2001 From: Gennady Date: Sat, 7 Sep 2019 13:00:52 +0400 Subject: [PATCH 2/5] feat(dijkstra): Add some tests for "Dijkstra algorithm" --- .../IncorrectDistanceException.java | 7 ++ .../exceptions/NodeNotFoundException.java | 7 ++ .../test/java/com/bobocode/GraphImplTest.java | 112 +++++++++++++++++- 3 files changed, 123 insertions(+), 3 deletions(-) create mode 100644 dijkstra-algorythm/src/main/java/com/bobocode/exceptions/IncorrectDistanceException.java create mode 100644 dijkstra-algorythm/src/main/java/com/bobocode/exceptions/NodeNotFoundException.java diff --git a/dijkstra-algorythm/src/main/java/com/bobocode/exceptions/IncorrectDistanceException.java b/dijkstra-algorythm/src/main/java/com/bobocode/exceptions/IncorrectDistanceException.java new file mode 100644 index 0000000..9c027c1 --- /dev/null +++ b/dijkstra-algorythm/src/main/java/com/bobocode/exceptions/IncorrectDistanceException.java @@ -0,0 +1,7 @@ +package com.bobocode.exceptions; + +public class IncorrectDistanceException extends RuntimeException { + public IncorrectDistanceException(String message) { + super(message); + } +} diff --git a/dijkstra-algorythm/src/main/java/com/bobocode/exceptions/NodeNotFoundException.java b/dijkstra-algorythm/src/main/java/com/bobocode/exceptions/NodeNotFoundException.java new file mode 100644 index 0000000..7f5e860 --- /dev/null +++ b/dijkstra-algorythm/src/main/java/com/bobocode/exceptions/NodeNotFoundException.java @@ -0,0 +1,7 @@ +package com.bobocode.exceptions; + +public class NodeNotFoundException extends RuntimeException { + public NodeNotFoundException(String message) { + super(message); + } +} diff --git a/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java b/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java index 9ebacfc..ce2f917 100644 --- a/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java +++ b/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java @@ -1,17 +1,20 @@ package com.bobocode; +import com.bobocode.exceptions.IncorrectDistanceException; +import com.bobocode.exceptions.NodeNotFoundException; import com.bobocode.interfaces.Graph; import org.junit.jupiter.api.Test; import java.util.Set; -import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; class GraphImplTest { private Graph graph = new GraphImpl(); @Test - public void testAddNodesIntoEmptyGraph() { + public void testCalculateShortestDistanceBetweenNodes() { graph.addNode("nodeA"); graph.addNode("nodeB"); graph.addNode("nodeC"); @@ -34,8 +37,111 @@ public void testAddNodesIntoEmptyGraph() { assertEquals(graph.calculateShortestDistance("nodeA", "nodeF"), 7); assertEquals(graph.calculateShortestDistance("nodeA", "nodeE"), 9); + } + + @Test + public void testCalculateShortestPathBetweenNodes() { + graph.addNode("nodeA"); + graph.addNode("nodeB"); + graph.addNode("nodeC"); + graph.addNode("nodeD"); + graph.addNode("nodeE"); + graph.addNode("nodeF"); + + graph.addDestination("nodeA", "nodeB", 2); + graph.addDestination("nodeA", "nodeC", 4); + graph.addDestination("nodeA", "nodeD", 5); + + graph.addDestination("nodeB", "nodeE", 7); + graph.addDestination("nodeB", "nodeC", 1); + + graph.addDestination("nodeC", "nodeD", 3); + graph.addDestination("nodeC", "nodeF", 4); - assertEquals(graph.calculateShortestPath("nodeA", "nodeF"), Set.of("nodeA", "nodeD", "NodeF")); + graph.addDestination("nodeD", "nodeF", 2); + graph.addDestination("nodeE", "nodeF", 8); + + assertEquals(graph.calculateShortestPath("nodeA", "nodeF"), Set.of("nodeA", "nodeD", "nodeF")); } + @Test + public void testCalculateShortestDistanceInEmptyGraph() { + graph.addNode("nodeA"); + graph.addNode("nodeB"); + graph.addNode("nodeC"); + graph.addNode("nodeD"); + graph.addNode("nodeE"); + graph.addNode("nodeF"); + + assertEquals(graph.calculateShortestDistance("nodeA", "nodeF"), Integer.MAX_VALUE); + assertEquals(graph.calculateShortestDistance("nodeA", "nodeE"), Integer.MAX_VALUE); + + assertNull(graph.calculateShortestPath("nodeA", "nodeF")); + } + + @Test + public void testCalculateShortestDistanceInGraphWithoutNodes() { + try { + graph.calculateShortestDistance("nodeA", "nodeF"); + fail("Should throw exception"); + } catch (Exception e) { + assertTrue(e instanceof NodeNotFoundException); + assertEquals(String.format("Cannot find Node with name=%s", "nodeA"), e.getMessage()); + } + } + + @Test + public void testCalculateShortestPathInGraphWithoutNodes() { + try { + graph.calculateShortestPath("nodeA", "nodeF"); + fail("Should throw exception"); + } catch (Exception e) { + assertTrue(e instanceof NodeNotFoundException); + assertEquals(String.format("Cannot find Node with name=%s", "nodeA"), e.getMessage()); + } + } + + @Test + public void testNotConnectedNodeIntoGraph() { + graph.addNode("nodeA"); + graph.addNode("nodeB"); + graph.addNode("nodeC"); + graph.addNode("nodeD"); + + graph.addDestination("nodeA", "nodeB", 3); + graph.addDestination("nodeA", "nodeC", 10); + + graph.addDestination("nodeB", "nodeC", 6); + graph.addDestination("nodeC", "nodeB", 6); + + assertEquals(graph.calculateShortestDistance("nodeA", "nodeC"), 9); + assertEquals(graph.calculateShortestDistance("nodeA", "nodeD"), Integer.MAX_VALUE); + + assertEquals(graph.calculateShortestPath("nodeA", "nodeC"), Set.of("nodeA", "nodeB", "nodeC")); + } + + @Test + public void testAddDistanceWithoutNode() { + + try { + graph.addDestination("nodeA", "nodeB", -1); + fail("Should throw exception"); + } catch (Exception e) { + assertTrue(e instanceof NodeNotFoundException); + assertEquals(String.format("Cannot find Node with name=%s", "nodeA"), e.getMessage()); + } + } + + @Test + public void testIncorrectDistanceIntoGraph() { + graph.addNode("nodeA"); + graph.addNode("nodeB"); + + try { + graph.addDestination("nodeA", "nodeB", -1); + fail("Should throw exception"); + } catch (Exception e) { + assertTrue(e instanceof IncorrectDistanceException); + } + } } \ No newline at end of file From 37830222c57620973c76926036dbf0a0f3e39c4d Mon Sep 17 00:00:00 2001 From: Gennady Date: Sat, 7 Sep 2019 13:08:23 +0400 Subject: [PATCH 3/5] feat(dijkstra): Fix some sonar issues --- .../test/java/com/bobocode/GraphImplTest.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java b/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java index ce2f917..1b2734e 100644 --- a/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java +++ b/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java @@ -11,6 +11,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; class GraphImplTest { + public static final String NODE_NOT_FOUND_MSG_PREFIX = "Cannot find Node with name=%s"; private Graph graph = new GraphImpl(); @Test @@ -84,9 +85,10 @@ public void testCalculateShortestDistanceInGraphWithoutNodes() { try { graph.calculateShortestDistance("nodeA", "nodeF"); fail("Should throw exception"); + } catch (NodeNotFoundException e) { + assertEquals(String.format(NODE_NOT_FOUND_MSG_PREFIX, "nodeA"), e.getMessage()); } catch (Exception e) { - assertTrue(e instanceof NodeNotFoundException); - assertEquals(String.format("Cannot find Node with name=%s", "nodeA"), e.getMessage()); + fail("Exception must be NodeNotFoundException"); } } @@ -95,9 +97,10 @@ public void testCalculateShortestPathInGraphWithoutNodes() { try { graph.calculateShortestPath("nodeA", "nodeF"); fail("Should throw exception"); + } catch (NodeNotFoundException e) { + assertEquals(String.format(NODE_NOT_FOUND_MSG_PREFIX, "nodeA"), e.getMessage()); } catch (Exception e) { - assertTrue(e instanceof NodeNotFoundException); - assertEquals(String.format("Cannot find Node with name=%s", "nodeA"), e.getMessage()); + fail("Exception must be NodeNotFoundException"); } } @@ -126,9 +129,10 @@ public void testAddDistanceWithoutNode() { try { graph.addDestination("nodeA", "nodeB", -1); fail("Should throw exception"); + } catch (NodeNotFoundException e) { + assertEquals(String.format(NODE_NOT_FOUND_MSG_PREFIX, "nodeA"), e.getMessage()); } catch (Exception e) { - assertTrue(e instanceof NodeNotFoundException); - assertEquals(String.format("Cannot find Node with name=%s", "nodeA"), e.getMessage()); + fail("Exception must be NodeNotFoundException"); } } @@ -140,8 +144,10 @@ public void testIncorrectDistanceIntoGraph() { try { graph.addDestination("nodeA", "nodeB", -1); fail("Should throw exception"); + } catch (IncorrectDistanceException e) { + // Correct situation } catch (Exception e) { - assertTrue(e instanceof IncorrectDistanceException); + fail("Exception must be IncorrectDistanceException"); } } } \ No newline at end of file From 165d692ce9eb744b0e0a39fb4153293a9f22af94 Mon Sep 17 00:00:00 2001 From: Gennady Date: Sat, 7 Sep 2019 13:15:56 +0400 Subject: [PATCH 4/5] feat(dijkstra): Fix module name --- {dijkstra-algorythm => dijkstra-algorithm}/pom.xml | 2 +- .../src/main/java/com/bobocode/GraphImpl.java | 0 .../com/bobocode/exceptions/IncorrectDistanceException.java | 0 .../java/com/bobocode/exceptions/NodeNotFoundException.java | 0 .../src/main/java/com/bobocode/interfaces/Graph.java | 0 .../src/test/java/com/bobocode/GraphImplTest.java | 0 pom.xml | 2 +- 7 files changed, 2 insertions(+), 2 deletions(-) rename {dijkstra-algorythm => dijkstra-algorithm}/pom.xml (90%) rename {dijkstra-algorythm => dijkstra-algorithm}/src/main/java/com/bobocode/GraphImpl.java (100%) rename {dijkstra-algorythm => dijkstra-algorithm}/src/main/java/com/bobocode/exceptions/IncorrectDistanceException.java (100%) rename {dijkstra-algorythm => dijkstra-algorithm}/src/main/java/com/bobocode/exceptions/NodeNotFoundException.java (100%) rename {dijkstra-algorythm => dijkstra-algorithm}/src/main/java/com/bobocode/interfaces/Graph.java (100%) rename {dijkstra-algorythm => dijkstra-algorithm}/src/test/java/com/bobocode/GraphImplTest.java (100%) diff --git a/dijkstra-algorythm/pom.xml b/dijkstra-algorithm/pom.xml similarity index 90% rename from dijkstra-algorythm/pom.xml rename to dijkstra-algorithm/pom.xml index bec84d4..0491324 100644 --- a/dijkstra-algorythm/pom.xml +++ b/dijkstra-algorithm/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - dijkstra-algorythm + dijkstra-algorithm \ No newline at end of file diff --git a/dijkstra-algorythm/src/main/java/com/bobocode/GraphImpl.java b/dijkstra-algorithm/src/main/java/com/bobocode/GraphImpl.java similarity index 100% rename from dijkstra-algorythm/src/main/java/com/bobocode/GraphImpl.java rename to dijkstra-algorithm/src/main/java/com/bobocode/GraphImpl.java diff --git a/dijkstra-algorythm/src/main/java/com/bobocode/exceptions/IncorrectDistanceException.java b/dijkstra-algorithm/src/main/java/com/bobocode/exceptions/IncorrectDistanceException.java similarity index 100% rename from dijkstra-algorythm/src/main/java/com/bobocode/exceptions/IncorrectDistanceException.java rename to dijkstra-algorithm/src/main/java/com/bobocode/exceptions/IncorrectDistanceException.java diff --git a/dijkstra-algorythm/src/main/java/com/bobocode/exceptions/NodeNotFoundException.java b/dijkstra-algorithm/src/main/java/com/bobocode/exceptions/NodeNotFoundException.java similarity index 100% rename from dijkstra-algorythm/src/main/java/com/bobocode/exceptions/NodeNotFoundException.java rename to dijkstra-algorithm/src/main/java/com/bobocode/exceptions/NodeNotFoundException.java diff --git a/dijkstra-algorythm/src/main/java/com/bobocode/interfaces/Graph.java b/dijkstra-algorithm/src/main/java/com/bobocode/interfaces/Graph.java similarity index 100% rename from dijkstra-algorythm/src/main/java/com/bobocode/interfaces/Graph.java rename to dijkstra-algorithm/src/main/java/com/bobocode/interfaces/Graph.java diff --git a/dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java b/dijkstra-algorithm/src/test/java/com/bobocode/GraphImplTest.java similarity index 100% rename from dijkstra-algorythm/src/test/java/com/bobocode/GraphImplTest.java rename to dijkstra-algorithm/src/test/java/com/bobocode/GraphImplTest.java diff --git a/pom.xml b/pom.xml index 7347d44..e650bdc 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ declarative-sum-of-squares crazy-lambdas crazy-optionals - dijkstra-algorythm + dijkstra-algorithm pom From de1742071af272c6f67bac24a22429c3dd8a10b4 Mon Sep 17 00:00:00 2001 From: Gennady Date: Sat, 7 Sep 2019 14:04:34 +0400 Subject: [PATCH 5/5] feat(dijkstra): Add creating graph from file. Add javaDoc in files --- .../src/main/java/com/bobocode/GraphImpl.java | 47 +++++++++++++++++++ .../java/com/bobocode/interfaces/Graph.java | 47 ++++++++++++++++++- .../test/java/com/bobocode/GraphImplTest.java | 8 ++++ linked-queue/src/test/resources/graph.txt | 12 +++++ 4 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 linked-queue/src/test/resources/graph.txt diff --git a/dijkstra-algorithm/src/main/java/com/bobocode/GraphImpl.java b/dijkstra-algorithm/src/main/java/com/bobocode/GraphImpl.java index ad01488..fa74bd4 100644 --- a/dijkstra-algorithm/src/main/java/com/bobocode/GraphImpl.java +++ b/dijkstra-algorithm/src/main/java/com/bobocode/GraphImpl.java @@ -4,23 +4,70 @@ import java.util.Set; +/** + * {@link GraphImpl} implements Graph {@link Graph}, using nodes as vertices. Nodes are stores in instances of nested + * class Node. The graph can be initialized from a file, or by calling methods to add a node {@link GraphImpl#addNode(String)} + * and add an edge {@link GraphImpl#addDestination(String, String, int)} + * + */ public class GraphImpl implements Graph { + /** + * This method creates a Graph from file + * + * File format e.g. + * nodeA nodeB nodeC + * nodeA nodeB 1 + * nodeA nodeC 12 + * @param fileName file contains graph struct + * @return a new graph contains vertices and edges + */ + @Override + public Graph fromFile(String fileName) { + throw new UnsupportedOperationException("This method is not implemented yet"); // todo: implement this method + } + + /** + * Adds a node to the graph, if it doesn't exist + * + * @param nodeName name of node to add + */ @Override public void addNode(String nodeName) { throw new UnsupportedOperationException("This method is not implemented yet"); // todo: implement this method } + /** + * Adds a edge to the graph between nodes + * + * @param nodeFromName name of first node in edge + * @param nodeToName name of second node in edge + * @param distance the weight of edge + */ @Override public void addDestination(String nodeFromName, String nodeToName, int distance) { throw new UnsupportedOperationException("This method is not implemented yet"); // todo: implement this method } + /** + * Calculates shortest distance between two nodes + * + * @param nodeStart name of node start path + * @param nodeEnd name of node finish path + * @return min distance between two nodes + */ @Override public int calculateShortestDistance(String nodeStart, String nodeEnd) { throw new UnsupportedOperationException("This method is not implemented yet"); // todo: implement this method } + /** + * Calculates shortest path between two nodes + * + * @param nodeStart name of node start path + * @param nodeEnd name of node finish path + * @return set of nodes, contains min path between two nodes + */ @Override public Set calculateShortestPath(String nodeStart, String nodeEnd) { throw new UnsupportedOperationException("This method is not implemented yet"); // todo: implement this method diff --git a/dijkstra-algorithm/src/main/java/com/bobocode/interfaces/Graph.java b/dijkstra-algorithm/src/main/java/com/bobocode/interfaces/Graph.java index 5ebc0f3..5a0b9de 100644 --- a/dijkstra-algorithm/src/main/java/com/bobocode/interfaces/Graph.java +++ b/dijkstra-algorithm/src/main/java/com/bobocode/interfaces/Graph.java @@ -1,10 +1,55 @@ package com.bobocode.interfaces; import java.util.Set; - +/** + * Graph is a structure amounting to a set of objects in which some pairs of the objects are in some sense "related". + */ public interface Graph { + /** + * Adds new vertices in graph. + * + * @param nodeName the name of node to add + */ void addNode(String nodeName); + + /** + * Adds edge between two vertices. + * + * @param nodeFromName the name of first node in edge + * @param nodeToName the name of second node in edge + * @param distance distance between vertices + */ void addDestination(String nodeFromName, String nodeToName, int distance); + + /** + * Returns shortest distance between two vertices + * + * @param nodeStart the name of start node + * @param nodeEnd the name of finish node + * @return an integer value that is distance between vertices + */ int calculateShortestDistance(String nodeStart, String nodeEnd); + + /** + * Returns shortest path between two vertices + * + * @param nodeStart the name of start node + * @param nodeEnd the name of finish node + * @return a set that contains node names for shortest path between vertices + */ Set calculateShortestPath(String nodeStart, String nodeEnd); + + /** + * Returns configured Graph from file + * + * File format e.g. + * nodeA nodeB nodeC + * + * nodeA nodeB 1 + * nodeA nodeC 12 + * + * @param fileName the name of file, which contains graph + * @return a graph that contains vertices from file + */ + Graph fromFile(String fileName); } diff --git a/dijkstra-algorithm/src/test/java/com/bobocode/GraphImplTest.java b/dijkstra-algorithm/src/test/java/com/bobocode/GraphImplTest.java index 1b2734e..48fe7f6 100644 --- a/dijkstra-algorithm/src/test/java/com/bobocode/GraphImplTest.java +++ b/dijkstra-algorithm/src/test/java/com/bobocode/GraphImplTest.java @@ -150,4 +150,12 @@ public void testIncorrectDistanceIntoGraph() { fail("Exception must be IncorrectDistanceException"); } } + + @Test + public void testCorrectCalculateGraphFromFile() { + graph = graph.fromFile("graph.txt"); + + assertEquals(graph.calculateShortestDistance("nodeA", "nodeG"), 19); + assertEquals(graph.calculateShortestPath("nodeA", "nodeC"), Set.of("nodeA", "nodeC", "nodeE", "nodeG")); + } } \ No newline at end of file diff --git a/linked-queue/src/test/resources/graph.txt b/linked-queue/src/test/resources/graph.txt new file mode 100644 index 0000000..dd786ba --- /dev/null +++ b/linked-queue/src/test/resources/graph.txt @@ -0,0 +1,12 @@ +nodeA nodeB nodeC nodeD nodeE nodeF nodeG +nodeA nodeB 10 +nodeA nodeC 8 +nodeB nodeD 3 +nodeC nodeE 8 +nodeC nodeF 16 +nodeC nodeG 25 +nodeD nodeE 5 +nodeD nodeF 3 +nodeE nodeF 2 +nodeE nodeG 3 +nodeF nodeG 6 \ No newline at end of file