diff --git a/core/src/main/java/ru/trader/graph/Graph.java b/core/src/main/java/ru/trader/graph/Graph.java index 73f7277..8b5ab85 100644 --- a/core/src/main/java/ru/trader/graph/Graph.java +++ b/core/src/main/java/ru/trader/graph/Graph.java @@ -127,7 +127,6 @@ public class Graph> { LOG.trace("Search around"); for (Edge next : source.getEdges()) { if (withRefill && Math.min(limit, maxDistance) < next.getLength() && !source.getEntry().canRefill()) continue; - if (head.isConnect(next.getTarget())) continue; // target already added if source consist edge if (next.isConnect(target)) continue; Path path = head.connectTo(next.getTarget(), limit < next.getLength()); diff --git a/core/src/test/java/ru/trader/core/MarketAnalyzerTest.java b/core/src/test/java/ru/trader/core/MarketAnalyzerTest.java index 134bafb..4dc54b0 100644 --- a/core/src/test/java/ru/trader/core/MarketAnalyzerTest.java +++ b/core/src/test/java/ru/trader/core/MarketAnalyzerTest.java @@ -160,8 +160,8 @@ public class MarketAnalyzerTest extends Assert { analyzer.setJumps(3);analyzer.setMaxDistance(10);analyzer.setTank(15); Collection> paths = analyzer.getPaths(v10, v6); - TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6), Path.toPath(v10, v11, v6), - Path.toPath(v10, v8, v6), Path.toPath(v10, v8, v11, v6)); + TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6), Path.toPath(v10, v11, v6), Path.toPath(v10, v11, v10, v6), + Path.toPath(v10, v8, v6), Path.toPath(v10, v8, v10, v6), Path.toPath(v10, v8, v11, v6)); paths = analyzer.getPaths(v10, v7); TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6, v7), Path.toPath(v10, v11, v6, v7), @@ -170,7 +170,8 @@ public class MarketAnalyzerTest extends Assert { paths = analyzer.getPaths(v10, v8); TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v8), Path.toPath(v10, v11, v8), - Path.toPath(v10, v11, v6, v8), Path.toPath(v10, v6, v8), Path.toPath(v10, v6, v11, v8)); + Path.toPath(v10, v11, v6, v8), Path.toPath(v10, v6, v8), Path.toPath(v10, v6, v11, v8), + Path.toPath(v10, v11, v10, v8), Path.toPath(v10, v6, v10, v8)); paths = analyzer.getPaths(v10, v9); assertTrue(paths.isEmpty()); diff --git a/core/src/test/java/ru/trader/graph/GraphTest.java b/core/src/test/java/ru/trader/graph/GraphTest.java index 7e19d33..14eb9b0 100644 --- a/core/src/test/java/ru/trader/graph/GraphTest.java +++ b/core/src/test/java/ru/trader/graph/GraphTest.java @@ -237,7 +237,8 @@ public class GraphTest extends Assert { paths = graph.getPathsTo(x4); TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x4), Path.toPath(x5, x6, x4), Path.toPath(x5, x3, x4), - Path.toPath(x5, x6, x3, x4), Path.toPath(x5, x3, x2, x4), Path.toPath(x5, x3, x6, x4)); + Path.toPath(x5, x3, x5, x4), Path.toPath(x5, x6, x3, x4), Path.toPath(x5, x3, x2, x4), Path.toPath(x5, x3, x6, x4), + Path.toPath(x5, x6, x5, x4)); paths = graph.getPathsTo(x5); @@ -271,7 +272,8 @@ public class GraphTest extends Assert { TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x4, x3, x2), Path.toPath(x5, x3, x2)); paths = graph.getPathsTo(x6); - TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x6), Path.toPath(x5, x4, x6), Path.toPath(x5, x3, x4, x6)); + TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x6), Path.toPath(x5, x4, x6), Path.toPath(x5, x3, x5, x6), + Path.toPath(x5, x4, x5, x6), Path.toPath(x5, x3, x4, x6)); Path fast = graph.getFastPathTo(x2); assertEquals(fast, Path.toPath(x5, x3, x2)); @@ -292,12 +294,16 @@ public class GraphTest extends Assert { paths = graph.getPathsTo(x2); TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x3, x4, x2), Path.toPath(x5, x3, x2), - Path.toPath(x5, x4, x3, x2), Path.toPath(x5, x4, x2), - Path.toPath(x5, x6, x4, x2), Path.toPath(x5, x6, x4, x3, x2)); + Path.toPath(x5, x4, x3, x2), Path.toPath(x5, x4, x2), Path.toPath(x5, x3, x5, x4, x2), + Path.toPath(x5, x6, x4, x2), Path.toPath(x5, x6, x4, x3, x2), Path.toPath(x5, x4, x3, x4, x2), + Path.toPath(x5, x4, x5, x4, x2), Path.toPath(x5, x6, x5, x4, x2), Path.toPath(x5, x3, x4, x3, x2)); paths = graph.getPathsTo(x6); TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x6), Path.toPath(x5, x4, x6), - Path.toPath(x5, x3, x4, x6), Path.toPath(x5, x3, x6), Path.toPath(x5, x4, x3, x6)); + Path.toPath(x5, x3, x4, x6), Path.toPath(x5, x3, x6), Path.toPath(x5, x4, x3, x6), + Path.toPath(x5, x3, x4, x3, x6), Path.toPath(x5, x3, x4, x5, x6), Path.toPath(x5, x3, x5, x6), + Path.toPath(x5, x3, x5, x4, x6), Path.toPath(x5, x4, x3, x4, x6), Path.toPath(x5, x4, x3, x5, x6), + Path.toPath(x5, x4, x5, x6), Path.toPath(x5, x4, x5, x4, x6)); paths = graph.getPathsTo(x7); assertTrue(paths.isEmpty());