1
0
Fork 0

Adapted existing shortest path tests to new version. Breaking API Change. Has to be documented.

This commit is contained in:
Michael Hackstein 2015-05-22 11:56:46 -07:00
parent 2d69425b39
commit e1813327b5
2 changed files with 74 additions and 52 deletions

View File

@ -5599,9 +5599,6 @@ function AQL_SHORTEST_PATH (vertexCollection,
}
if (params.hasOwnProperty("includeData")) {
opts.includeData = params.includeData;
} else {
// Default has to include the data for backwards compatibility
opts.includeData = true;
}
if (params.hasOwnProperty("followEdges")) {
opts.followEdges = params.followEdges;
@ -5627,35 +5624,13 @@ function AQL_SHORTEST_PATH (vertexCollection,
}
}
var newRes = CPP_SHORTEST_PATH(vertexCollections, edgeCollections,
// newRes has the format: { vertices: [Doc], edges: [Doc], distance: Number}
// oldResult had the format: [ {vertex: Doc} ]
return CPP_SHORTEST_PATH(vertexCollections, edgeCollections,
TO_ID(startVertex, vertexCollection),
TO_ID(endVertex, vertexCollection),
opts
);
// newRes has the format: { vertices: [Doc], edges: [Doc], distance: Number}
// legacyResult has the format: [ {vertex: Doc} ]
var legacyResult = [];
if (newRes === null) {
return legacyResult;
}
if (params.paths) {
// Prints all sub paths in form of {vertex: target, vertices: [verticesOnPath], edges: [edgesOnPath]}
for (i = 0; i < newRes.vertices.length; ++i) {
legacyResult.push({
vertex: newRes.vertices[i],
path: {
vertices: newRes.vertices.slice(0, i + 1),
edges: newRes.edges.slice(0, i)
}
});
}
} else {
for (i = 0; i < newRes.vertices.length; ++i) {
legacyResult.push({vertex: newRes.vertices[i]});
}
}
return legacyResult;
}
////////////////////////////////////////////////////////////////////////////////

View File

@ -1,5 +1,5 @@
/*jshint globalstrict:false, strict:false, sub: true, maxlen: 500 */
/*global assertEqual */
/*global assertEqual, assertTrue */
////////////////////////////////////////////////////////////////////////////////
/// @brief tests for query language, graph functions
@ -736,26 +736,65 @@ function ahuacatlQueryShortestPathTestSuite () {
},
////////////////////////////////////////////////////////////////////////////////
/// @brief shortest path using dijkstra
/// @brief shortest path using dijkstra default config
////////////////////////////////////////////////////////////////////////////////
testShortestPathDijkstraOutbound : function () {
var config = {
paths: true,
_sort: true
};
var actual = getQueryResults("FOR p IN SHORTEST_PATH(@@v, @@e, '" + vn + "/A', '" + vn + "/H', 'outbound', " + JSON.stringify(config) + ") RETURN [ p.vertex._key, p.path.vertices[*]._key, p.path.edges[*]._key ]", { "@v" : vn, "@e" : en });
var actual = getQueryResults("RETURN SHORTEST_PATH(@@v, @@e, '" + vn + "/A', '" + vn + "/H', 'outbound', " + JSON.stringify(config) + ")", { "@v" : vn, "@e" : en });
assertEqual([
[ "A", [ "A" ], [ ] ],
[ "D", [ "A", "D" ], [ "AD" ] ],
[ "E", [ "A", "D", "E" ], [ "AD", "DE" ] ],
[ "G", [ "A", "D", "E", "G" ], [ "AD", "DE", "EG" ] ],
[ "H", [ "A", "D", "E", "G", "H" ], [ "AD", "DE", "EG", "GH" ] ]
assertEqual([
{
vertices: [
vn + "/A",
vn + "/D",
vn + "/E",
vn + "/G",
vn + "/H"
],
edges: [
en + "/AD",
en + "/DE",
en + "/EG",
en + "/GH"
],
distance: 4
}
], actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief shortest path using dijkstra with includeData: true
////////////////////////////////////////////////////////////////////////////////
testShortestPathDijkstraOutboundIncludeData : function () {
var config = {
_sort: true,
includeData: true
};
var actual = getQueryResults("RETURN SHORTEST_PATH(@@v, @@e, '" + vn + "/A', '" + vn + "/H', 'outbound', " + JSON.stringify(config) + ")", { "@v" : vn, "@e" : en });
assertEqual(actual.length, 1);
assertTrue(actual[0].hasOwnProperty("vertices"));
assertTrue(actual[0].hasOwnProperty("edges"));
var vertices = actual[0].vertices;
var edges = actual[0].edges;
assertEqual(vertices.length, edges.length + 1);
var correct = ["A", "D", "E", "G", "H"];
for (var i = 0; i < edges.length; ++i) {
assertEqual(vertices[i]._key, correct[i]);
assertEqual(vertices[i].name, correct[i]);
assertEqual(vertices[i + 1].name, correct[i + 1]);
assertEqual(edges[i]._key, correct[i] + correct[i + 1]);
assertEqual(edges[i].what, correct[i] + "->" + correct[i + 1]);
}
},
////////////////////////////////////////////////////////////////////////////////
/// @brief shortest path using dijkstra
////////////////////////////////////////////////////////////////////////////////
@ -765,9 +804,9 @@ function ahuacatlQueryShortestPathTestSuite () {
_sort: true
};
var actual = getQueryResults("FOR p IN SHORTEST_PATH(@@v, @@e, '" + vn + "/H', '" + vn + "/A', 'inbound', " + JSON.stringify(config) + ") RETURN p.vertex._key", { "@v" : vn, "@e" : en });
var actual = getQueryResults("RETURN SHORTEST_PATH(@@v, @@e, '" + vn + "/H', '" + vn + "/A', 'inbound', " + JSON.stringify(config) + ").vertices", { "@v" : vn, "@e" : en });
assertEqual([ "H", "G", "E", "D", "A" ], actual);
assertEqual([[ vn + "/H", vn + "/G", vn + "/E", vn + "/D", vn + "/A" ]], actual);
},
////////////////////////////////////////////////////////////////////////////////
@ -860,18 +899,27 @@ function ahuacatlQueryShortestPathTestSuite () {
});
var config = {
paths: true,
_sort: true
};
var actual = getQueryResults("FOR p IN SHORTEST_PATH(@@v, @@e, '" + vn + "/A', '" + vn + "/H', 'outbound', " + JSON.stringify(config) + ") RETURN [ p.vertex._key, p.path.vertices[*]._key, p.path.edges[*]._key ]", { "@v" : vn, "@e" : en });
assertEqual([
[ "A", [ "A" ], [ ] ],
[ "D", [ "A", "D" ], [ "AD" ] ],
[ "E", [ "A", "D", "E" ], [ "AD", "DE" ] ],
[ "G", [ "A", "D", "E", "G" ], [ "AD", "DE", "EG" ] ],
[ "H", [ "A", "D", "E", "G", "H" ], [ "AD", "DE", "EG", "GH" ] ]
var actual = getQueryResults("RETURN SHORTEST_PATH(@@v, @@e, '" + vn + "/A', '" + vn + "/H', 'outbound', " + JSON.stringify(config) + ")", { "@v" : vn, "@e" : en });
assertEqual([
{
vertices: [
vn + "/A",
vn + "/D",
vn + "/E",
vn + "/G",
vn + "/H"
],
edges: [
en + "/AD",
en + "/DE",
en + "/EG",
en + "/GH"
],
distance: 4
}
], actual);
},
@ -884,13 +932,12 @@ function ahuacatlQueryShortestPathTestSuite () {
vertexCollection.save({ _key: "J", name: "J" });
var config = {
paths: true,
_sort: true
};
var actual = getQueryResults("FOR p IN SHORTEST_PATH(@@v, @@e, '" + vn + "/A', '" + vn + "/J', 'outbound', " + JSON.stringify(config) + ") RETURN p.vertex._key", { "@v" : vn, "@e" : en });
var actual = getQueryResults("RETURN SHORTEST_PATH(@@v, @@e, '" + vn + "/A', '" + vn + "/J', 'outbound', " + JSON.stringify(config) + ")", { "@v" : vn, "@e" : en });
assertEqual([ ], actual);
assertEqual([ null ], actual);
}
};