fix reuse vertex on paths finding
This commit is contained in:
@@ -127,7 +127,6 @@ public class Graph<T extends Connectable<T>> {
|
|||||||
LOG.trace("Search around");
|
LOG.trace("Search around");
|
||||||
for (Edge<T> next : source.getEdges()) {
|
for (Edge<T> next : source.getEdges()) {
|
||||||
if (withRefill && Math.min(limit, maxDistance) < next.getLength() && !source.getEntry().canRefill()) continue;
|
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
|
// target already added if source consist edge
|
||||||
if (next.isConnect(target)) continue;
|
if (next.isConnect(target)) continue;
|
||||||
Path<T> path = head.connectTo(next.getTarget(), limit < next.getLength());
|
Path<T> path = head.connectTo(next.getTarget(), limit < next.getLength());
|
||||||
|
|||||||
@@ -160,8 +160,8 @@ public class MarketAnalyzerTest extends Assert {
|
|||||||
analyzer.setJumps(3);analyzer.setMaxDistance(10);analyzer.setTank(15);
|
analyzer.setJumps(3);analyzer.setMaxDistance(10);analyzer.setTank(15);
|
||||||
|
|
||||||
Collection<Path<Vendor>> paths = analyzer.getPaths(v10, v6);
|
Collection<Path<Vendor>> paths = analyzer.getPaths(v10, v6);
|
||||||
TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6), Path.toPath(v10, 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, v11, v6));
|
Path.toPath(v10, v8, v6), Path.toPath(v10, v8, v10, v6), Path.toPath(v10, v8, v11, v6));
|
||||||
|
|
||||||
paths = analyzer.getPaths(v10, v7);
|
paths = analyzer.getPaths(v10, v7);
|
||||||
TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6, v7), Path.toPath(v10, v11, v6, 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);
|
paths = analyzer.getPaths(v10, v8);
|
||||||
TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v8), Path.toPath(v10, v11, 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);
|
paths = analyzer.getPaths(v10, v9);
|
||||||
assertTrue(paths.isEmpty());
|
assertTrue(paths.isEmpty());
|
||||||
|
|||||||
@@ -237,7 +237,8 @@ public class GraphTest extends Assert {
|
|||||||
|
|
||||||
paths = graph.getPathsTo(x4);
|
paths = graph.getPathsTo(x4);
|
||||||
TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x4), Path.toPath(x5, x6, x4), Path.toPath(x5, x3, 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);
|
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));
|
TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x4, x3, x2), Path.toPath(x5, x3, x2));
|
||||||
|
|
||||||
paths = graph.getPathsTo(x6);
|
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<Point> fast = graph.getFastPathTo(x2);
|
Path<Point> fast = graph.getFastPathTo(x2);
|
||||||
assertEquals(fast, Path.toPath(x5, x3, x2));
|
assertEquals(fast, Path.toPath(x5, x3, x2));
|
||||||
@@ -292,12 +294,16 @@ public class GraphTest extends Assert {
|
|||||||
|
|
||||||
paths = graph.getPathsTo(x2);
|
paths = graph.getPathsTo(x2);
|
||||||
TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x3, x4, x2), Path.toPath(x5, x3, 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, 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, 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);
|
paths = graph.getPathsTo(x6);
|
||||||
TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x6), Path.toPath(x5, x4, 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);
|
paths = graph.getPathsTo(x7);
|
||||||
assertTrue(paths.isEmpty());
|
assertTrue(paths.isEmpty());
|
||||||
|
|||||||
Reference in New Issue
Block a user