diff --git a/arangod/Aql/ExecutionBlock.cpp b/arangod/Aql/ExecutionBlock.cpp index 90fc682b25..74fc07fb5f 100644 --- a/arangod/Aql/ExecutionBlock.cpp +++ b/arangod/Aql/ExecutionBlock.cpp @@ -3821,7 +3821,7 @@ bool BlockWithClients::preInitCursor () { int ScatterBlock::initializeCursor (AqlItemBlock* items, size_t pos) { - if (!preInitCursor()) { + if (! preInitCursor()) { return TRI_ERROR_NO_ERROR; } @@ -3842,7 +3842,7 @@ int ScatterBlock::initializeCursor (AqlItemBlock* items, size_t pos) { /// @brief hasMoreForShard: any more for shard ? //////////////////////////////////////////////////////////////////////////////// -bool ScatterBlock::hasMoreForShard (std::string const& shardId){ +bool ScatterBlock::hasMoreForShard (std::string const& shardId) { size_t clientId = getClientId(shardId); if (_doneForClient.at(clientId)) { @@ -3897,7 +3897,7 @@ int64_t ScatterBlock::remainingForShard (std::string const& shardId) { int ScatterBlock::getOrSkipSomeForShard (size_t atLeast, size_t atMost, bool skipping, AqlItemBlock*& result, - size_t& skipped, std::string const& shardId){ + size_t& skipped, std::string const& shardId) { TRI_ASSERT(0 < atLeast && atLeast <= atMost); TRI_ASSERT(result == nullptr && skipped == 0); @@ -3967,8 +3967,8 @@ DistributeBlock::DistributeBlock (ExecutionEngine* engine, DistributeNode const* ep, std::vector const& shardIds, Collection const* collection) - : BlockWithClients(engine, ep, shardIds), - _collection(collection) { + : BlockWithClients(engine, ep, shardIds), + _collection(collection) { // get the variable to inspect . . . VariableId varId = ep->_varId; diff --git a/arangod/Aql/ExecutionBlock.h b/arangod/Aql/ExecutionBlock.h index 1a64de131d..7ffe6a7e7e 100644 --- a/arangod/Aql/ExecutionBlock.h +++ b/arangod/Aql/ExecutionBlock.h @@ -1684,13 +1684,15 @@ namespace triagens { ScatterBlock (ExecutionEngine* engine, ScatterNode const* ep, std::vector const& shardIds) - : BlockWithClients(engine, ep, shardIds) {} + : BlockWithClients(engine, ep, shardIds) { + } //////////////////////////////////////////////////////////////////////////////// /// @brief destructor //////////////////////////////////////////////////////////////////////////////// - ~ScatterBlock () {} + ~ScatterBlock () { + } //////////////////////////////////////////////////////////////////////////////// /// @brief initializeCursor @@ -1755,7 +1757,8 @@ namespace triagens { /// @brief destructor //////////////////////////////////////////////////////////////////////////////// - ~DistributeBlock () {} + ~DistributeBlock () { + } //////////////////////////////////////////////////////////////////////////////// /// @brief initializeCursor @@ -1767,7 +1770,7 @@ namespace triagens { /// @brief remainingForShard: remaining for shard ? //////////////////////////////////////////////////////////////////////////////// - int64_t remainingForShard (std::string const& shardId){ + int64_t remainingForShard (std::string const& shardId) { return -1; } diff --git a/arangod/RestServer/ArangoServer.cpp b/arangod/RestServer/ArangoServer.cpp index 9e60f1364e..2116ea242d 100644 --- a/arangod/RestServer/ArangoServer.cpp +++ b/arangod/RestServer/ArangoServer.cpp @@ -889,7 +889,9 @@ int ArangoServer::startupServer () { // for a cluster coordinator, the users are loaded at a later stage; // the kickstarter will trigger a bootstrap process - if (ServerState::instance()->getRole() != ServerState::ROLE_COORDINATOR) { + const auto role = ServerState::instance()->getRole(); + + if (role != ServerState::ROLE_COORDINATOR && role != ServerState::ROLE_PRIMARY && role != ServerState::ROLE_SECONDARY) { // if the authentication info could not be loaded, but authentication is turned on, // then we refuse to start diff --git a/arangod/V8Server/v8-query.cpp b/arangod/V8Server/v8-query.cpp index 72bde27fea..af85b8be65 100644 --- a/arangod/V8Server/v8-query.cpp +++ b/arangod/V8Server/v8-query.cpp @@ -280,7 +280,7 @@ static int SetupExampleObject (v8::Handle const example, static TRI_index_operator_t* SetupConditionsSkiplist (TRI_index_t* idx, TRI_shaper_t* shaper, v8::Handle conditions) { - TRI_index_operator_t* lastOperator = 0; + TRI_index_operator_t* lastOperator = nullptr; size_t numEq = 0; size_t lastNonEq = 0; @@ -449,7 +449,7 @@ static TRI_index_operator_t* SetupConditionsSkiplist (TRI_index_t* idx, MEM_ERROR: TRI_FreeJson(TRI_UNKNOWN_MEM_ZONE, parameters); - if (lastOperator == nullptr) { + if (lastOperator != nullptr) { TRI_FreeIndexOperator(lastOperator); } diff --git a/js/apps/system/aardvark/frontend/js/views/queryView.js b/js/apps/system/aardvark/frontend/js/views/queryView.js index f96c0c9e6d..117abeb4cd 100644 --- a/js/apps/system/aardvark/frontend/js/views/queryView.js +++ b/js/apps/system/aardvark/frontend/js/views/queryView.js @@ -411,8 +411,8 @@ this.collection.each(function(model) { self.customQueries.push({ - name: model.attributes.name, - value: model.attributes.value + name: model.get("name"), + value: model.get("value") }); }); }, diff --git a/js/server/modules/org/arangodb/ahuacatl.js b/js/server/modules/org/arangodb/ahuacatl.js index 0cc1609fd5..66657acda4 100644 --- a/js/server/modules/org/arangodb/ahuacatl.js +++ b/js/server/modules/org/arangodb/ahuacatl.js @@ -4589,7 +4589,6 @@ function TRAVERSAL_VISITOR (config, result, vertex, path) { function TRAVERSAL_NEIGHBOR_VISITOR (config, result, vertex, path) { "use strict"; - result.push(CLONE({ vertex: vertex, path: path, startVertex : config.startVertex })); } @@ -4653,10 +4652,23 @@ function TRAVERSAL_EDGE_EXAMPLE_FILTER (config, vertex, edge, path) { function TRAVERSAL_VERTEX_FILTER (config, vertex, path) { "use strict"; - - if (! MATCHES(vertex, config.filterVertexExamples)) { + if (config.filterVertexExamples && !MATCHES(vertex, config.filterVertexExamples)) { + if (config.filterVertexCollections + && config.vertexFilterMethod.indexOf("exclude") === -1 + && config.filterVertexCollections.indexOf(vertex._id.split("/")[0]) === -1 + ) { + if (config.vertexFilterMethod.indexOf("prune") === -1) { + return ["exclude"]; + } + return ["prune", "exclude"]; + } return config.vertexFilterMethod; } + if (config.filterVertexCollections + && config.filterVertexCollections.indexOf(vertex._id.split("/")[0]) === -1 + ){ + return ["exclude"]; + } } //////////////////////////////////////////////////////////////////////////////// @@ -4789,6 +4801,11 @@ function TRAVERSAL_FUNC (func, config.vertexFilterMethod = params.vertexFilterMethod || ["prune", "exclude"]; } } + if (params.filterVertexCollections) { + config.filter = config.filter || TRAVERSAL_VERTEX_FILTER; + config.vertexFilterMethod = config.vertexFilterMethod || ["prune", "exclude"]; + config.filterVertexCollections = params.filterVertexCollections; + } if (params._sort) { config.sort = function (l, r) { return l._key < r._key ? -1 : 1; }; @@ -6020,8 +6037,8 @@ function GRAPH_NEIGHBORS (vertexCollection, /// * *edgeCollectionRestriction* : One or multiple edge /// collection names. Only edges from these collections will be considered for the path. /// * *vertexCollectionRestriction* : One or multiple vertex -/// collection names. Only vertices from these collections will be considered as -/// neighbor. +/// collection names. Only vertices from these collections will be contained in the +/// result. This does not effect vertices on the path. /// * *minDepth* : Defines the minimal /// depth a path to a neighbor must have to be returned (default is 1). /// * *maxDepth* : Defines the maximal @@ -6064,21 +6081,12 @@ function GENERAL_GRAPH_NEIGHBORS (graphName, } options.fromVertexExample = vertexExample; - if (! options.direction) { + if (! options.hasOwnProperty("direction")) { options.direction = 'any'; } - if (options.vertexCollectionRestriction) { - if (options.direction === "inbound") { - options.endVertexCollectionRestriction = options.vertexCollectionRestriction; - } else { - options.startVertexCollectionRestriction = options.vertexCollectionRestriction; - } - } - if (options.neighborExamples) { - if (typeof options.neighborExamples === "string") { - options.neighborExamples = {_id : options.neighborExamples}; - } + if (options.hasOwnProperty("neighborExamples") && typeof options.neighborExamples === "string") { + options.neighborExamples = {_id : options.neighborExamples}; } var neighbors = [], params = TRAVERSAL_PARAMS(), @@ -6094,6 +6102,9 @@ function GENERAL_GRAPH_NEIGHBORS (graphName, if (options.edgeCollectionRestriction) { params.edgeCollectionRestriction = options.edgeCollectionRestriction; } + if (options.vertexCollectionRestriction) { + params.filterVertexCollections = options.vertexCollectionRestriction; + } fromVertices.forEach(function (v) { var e = TRAVERSAL_FUNC("GRAPH_NEIGHBORS", factory, diff --git a/js/server/modules/org/arangodb/aql.js b/js/server/modules/org/arangodb/aql.js index 00aaf3d60e..e799ad086e 100644 --- a/js/server/modules/org/arangodb/aql.js +++ b/js/server/modules/org/arangodb/aql.js @@ -33,6 +33,7 @@ var TRAVERSAL = require("org/arangodb/graph/traversal"); var ArangoError = require("org/arangodb").ArangoError; var ShapedJson = INTERNAL.ShapedJson; var isCoordinator = require("org/arangodb/cluster").isCoordinator(); +var console = require("console"); // ----------------------------------------------------------------------------- // --SECTION-- private variables @@ -491,9 +492,14 @@ function FCALL_USER (name, parameters) { } if (UserFunctions[prefix].hasOwnProperty(name)) { - var result = UserFunctions[prefix][name].func.apply(null, parameters); - - return FIX_VALUE(result); + try { + var result = UserFunctions[prefix][name].func.apply(null, parameters); + return FIX_VALUE(result); + } + catch (err) { + console.warn("AQL user function '%s' returned an exception. result is converted to null", name); + return null; + } } THROW(INTERNAL.errors.ERROR_QUERY_FUNCTION_NOT_FOUND, NORMALIZE_FNAME(name)); diff --git a/js/server/tests/ahuacatl-general-graph.js b/js/server/tests/ahuacatl-general-graph.js index 66c26b0918..cb482d8b67 100644 --- a/js/server/tests/ahuacatl-general-graph.js +++ b/js/server/tests/ahuacatl-general-graph.js @@ -41,6 +41,7 @@ var assertQueryError = helper.assertQueryError; function ahuacatlQueryGeneralEdgesTestSuite() { + var gN = "bla3"; var v1 = "UnitTestsAhuacatlVertex1"; var v2 = "UnitTestsAhuacatlVertex2"; var v3 = "UnitTestsAhuacatlVertex3"; @@ -49,11 +50,18 @@ function ahuacatlQueryGeneralEdgesTestSuite() { var e2 = "UnitTestsAhuacatlEdge2"; var or = "UnitTestsAhuacatlOrphan"; + var AQL_VERTICES = "FOR e IN GRAPH_VERTICES(@name, @example, @options) SORT e._id RETURN e"; + var AQL_EDGES = "FOR e IN GRAPH_EDGES(@name, @example, @options) SORT e.what RETURN e.what"; + var AQL_NEIGHBORS = "FOR e IN GRAPH_NEIGHBORS(@name, @example, @options) SORT e.vertex._id, e.path.edges[0].what RETURN e"; + + var startExample = [{hugo : true}, {heinz : 1}]; + var vertexExample = {_key: "v1"}; + return { -//////////////////////////////////////////////////////////////////////////////// -/// @brief set up -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief set up + //////////////////////////////////////////////////////////////////////////////// setUp: function () { db._drop(v1); @@ -112,9 +120,9 @@ function ahuacatlQueryGeneralEdgesTestSuite() { ); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief tear down -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief tear down + //////////////////////////////////////////////////////////////////////////////// tearDown: function () { db._drop(v1); @@ -127,97 +135,802 @@ function ahuacatlQueryGeneralEdgesTestSuite() { db._collection("_graphs").remove("_graphs/bla3"); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks GRAPH_EDGES() and GRAPH_NEIGHBOURS() and GRAPH_VERTICES() -//////////////////////////////////////////////////////////////////////////////// - - testEdgesAny: function () { - - var actual; - actual = getRawQueryResults("FOR e IN GRAPH_VERTICES('bla3', '" + v1 + "/v1', {direction : 'any'}) RETURN e"); + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks GRAPH_VERTICES() + //////////////////////////////////////////////////////////////////////////////// + testVertices: function () { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: {direction : 'any'} + }; + var actual = getRawQueryResults(AQL_VERTICES, bindVars); assertEqual(actual[0]._id, v1 + '/v1'); + }, - actual = getRawQueryResults("FOR e IN GRAPH_VERTICES('bla3', {}, {direction : 'any', vertexCollectionRestriction : 'UnitTestsAhuacatlOrphan'}) RETURN e"); + testVerticesRestricted: function() { + var bindVars = { + name: gN, + example: {}, + options: { + direction : 'any', + vertexCollectionRestriction: or + } + }; + var actual = getRawQueryResults(AQL_VERTICES, bindVars); + assertEqual(actual.length, 1); assertEqual(actual[0]._id, 'UnitTestsAhuacatlOrphan/orphan'); + }, - actual = getQueryResults("FOR e IN GRAPH_EDGES('bla3', 'UnitTestsAhuacatlVertex1/v1', {direction : 'any'}) SORT e.what RETURN e.what"); + testVerticesExample: function () { + var bindVars = { + name: gN, + example: startExample, + options: {direction : 'any'} + }; + var actual = getRawQueryResults(AQL_VERTICES, bindVars); + assertEqual(actual.length, 4); + assertEqual(actual[0]._id, 'UnitTestsAhuacatlVertex1/v1'); + assertEqual(actual[1]._id, 'UnitTestsAhuacatlVertex1/v2'); + assertEqual(actual[2]._id, 'UnitTestsAhuacatlVertex2/v3'); + assertEqual(actual[3]._id, 'UnitTestsAhuacatlVertex4/v8'); + }, + + testVerticesWithInboundEdges: function () { + var bindVars = { + name: gN, + example: v3 + "/v5", + options: {direction : 'inbound'} + }; + var actual = getRawQueryResults(AQL_VERTICES, bindVars); + assertEqual(actual.length, 1); + assertEqual(actual[0]._id, 'UnitTestsAhuacatlVertex3/v5'); + }, + + testVerticesWithInboundEdgesHasNoInboundEdges: function () { + var bindVars = { + name: gN, + example: v2 + "/v3", + options: {direction : 'inbound'} + }; + var actual = getRawQueryResults(AQL_VERTICES, bindVars); + assertEqual(actual.length, 0); + }, + + testVerticesWithInboundEdgesAndExample: function () { + var bindVars = { + name: gN, + example: startExample, + options: {direction : 'inbound'} + }; + var actual = getRawQueryResults(AQL_VERTICES, bindVars); + assertEqual(actual.length, 3); + assertEqual(actual[0]._id, 'UnitTestsAhuacatlVertex1/v1'); + assertEqual(actual[1]._id, 'UnitTestsAhuacatlVertex1/v2'); + assertEqual(actual[2]._id, 'UnitTestsAhuacatlVertex4/v8'); + }, + + testVerticesWithInboundEdgesRestrictedHasNoInbound: function() { + var bindVars = { + name: gN, + example: {}, + options: { + direction : 'inbound', + vertexCollectionRestriction: v2 + } + }; + var actual = getRawQueryResults(AQL_VERTICES, bindVars); + assertEqual(actual.length, 0); + }, + + testVerticesWithInboundEdgesRestrictedHasInbound: function() { + var bindVars = { + name: gN, + example: {}, + options: { + direction : 'inbound', + vertexCollectionRestriction: v3 + } + }; + var actual = getRawQueryResults(AQL_VERTICES, bindVars); + assertEqual(actual.length, 2); + assertEqual(actual[0]._id, v3 + '/v5'); + assertEqual(actual[1]._id, v3 + '/v6'); + }, + + testVerticesWithOutboundEdgesRestrictedHasOutbound: function() { + var bindVars = { + name: gN, + example: {}, + options: { + direction : 'outbound', + vertexCollectionRestriction: v2 + } + }; + var actual = getRawQueryResults(AQL_VERTICES, bindVars); + assertEqual(actual.length, 2); + assertEqual(actual[0]._id, v2 + '/v3'); + assertEqual(actual[1]._id, v2 + '/v4'); + }, + + testVerticesWithOutboundEdgesRestrictedHasNoOutbound: function() { + var bindVars = { + name: gN, + example: {}, + options: { + direction : 'outbound', + vertexCollectionRestriction: v3 + } + }; + var actual = getRawQueryResults(AQL_VERTICES, bindVars); + assertEqual(actual.length, 0); + }, + + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks GRAPH_EDGES() + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////// + /// Section any direction + //////////////////////////////////////////////////////////////////////////////// + + testEdgesAny: function () { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: {direction : 'any'} + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); assertEqual(actual, [ "v1->v2", "v1->v5", "v2->v1" ]); + }, - actual = getQueryResults("FOR e IN GRAPH_EDGES('bla3', 'UnitTestsAhuacatlVertex1/v1', {direction : 'any' , edgeCollectionRestriction: ['UnitTestsAhuacatlEdge1']}) " + - "SORT e.what RETURN e.what"); + testEdgesAnyRestricted: function () { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: { + direction : 'any', + edgeCollectionRestriction: [e1] + } + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); assertEqual(actual, [ "v1->v2", "v2->v1" ]); + }, - actual = getQueryResults("FOR e IN GRAPH_EDGES('bla3', [{hugo : true}, {heinz : 1}], {direction : 'any'}) " + - "SORT e.what RETURN e.what"); - assertEqual(actual, [ "v1->v2", + testEdgesAnyStartExample: function () { + var bindVars = { + name: gN, + example: startExample, + options: {direction : 'any'} + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); + assertEqual(actual, [ + "v1->v2", "v1->v5", "v2->v1", "v2->v5", "v3->v5", "v3->v6", - "v3->v8" ]); + "v3->v8" + ]); + }, - actual = getRawQueryResults("FOR e IN GRAPH_VERTICES('bla3', [{hugo : true}, {heinz : 1}], {direction : 'any'}) SORT e._id RETURN e"); - assertEqual(actual[0]._id, 'UnitTestsAhuacatlVertex1/v1'); - assertEqual(actual[1]._id, 'UnitTestsAhuacatlVertex1/v2'); - assertEqual(actual[2]._id, 'UnitTestsAhuacatlVertex2/v3'); - assertEqual(actual[3]._id, 'UnitTestsAhuacatlVertex4/v8'); + testEdgesAnyStartExampleEdgeExample: function () { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: { + direction : 'any', + edgeExamples: [{what: 'v2->v1'}] + } + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); + assertEqual(actual.length, 1); + assertEqual(actual[0], "v2->v1"); + }, + testEdgesInbound: function() { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: {direction : 'inbound'} + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); + assertEqual(actual, [ "v2->v1"]); + }, - actual = getQueryResults("FOR e IN GRAPH_EDGES('bla3', 'UnitTestsAhuacatlVertex1/v1', {direction : 'any' , edgeExamples : [{'what' : 'v2->v1'}]}) SORT e.what RETURN e.what"); - assertEqual(actual, [ "v2->v1" ]); + testEdgesInboundStartExample: function() { + var bindVars = { + name: gN, + example: startExample, + options: {direction : 'inbound'} + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); + assertEqual(actual.length, 3); + assertEqual(actual[0], "v1->v2"); + assertEqual(actual[1], "v2->v1"); + assertEqual(actual[2], "v3->v8"); + }, - actual = getQueryResults("FOR e IN GRAPH_NEIGHBORS('bla3', 'UnitTestsAhuacatlVertex1/v1', {direction : 'any' , edgeExamples : [{'what' : 'v2->v1'}]}) SORT e.what RETURN e"); + testEdgesInboundStartExampleRestricted: function() { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'inbound', + edgeCollectionRestriction: [e2] + } + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); + assertEqual(actual.length, 1); + assertEqual(actual[0], "v3->v8"); + }, + + testEdgesInboundStartExampleEdgeExample: function() { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'inbound', + edgeExamples: [{'what' : 'v3->v8'}] + } + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); + assertEqual(actual.length, 1); + assertEqual(actual[0], "v3->v8"); + }, + + testEdgesOutbound: function() { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: {direction : 'outbound'} + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); + assertEqual(actual[0], "v1->v2"); + assertEqual(actual[1], "v1->v5"); + }, + + testEdgesOutboundStartExample: function() { + var bindVars = { + name: gN, + example: startExample, + options: {direction : 'outbound'} + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); + assertEqual(actual.length, 7); + assertEqual(actual[0], "v1->v2"); + assertEqual(actual[1], "v1->v5"); + assertEqual(actual[2], "v2->v1"); + assertEqual(actual[3], "v2->v5"); + assertEqual(actual[4], "v3->v5"); + assertEqual(actual[5], "v3->v6"); + assertEqual(actual[6], "v3->v8"); + }, + + testEdgesOutboundStartExampleRestricted: function() { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'outbound', + edgeCollectionRestriction: [e2] + } + }; + var actual = getRawQueryResults(AQL_EDGES, bindVars); + assertEqual(actual.length, 5); + assertEqual(actual[0], "v1->v5"); + assertEqual(actual[1], "v2->v5"); + assertEqual(actual[2], "v3->v5"); + assertEqual(actual[3], "v3->v6"); + assertEqual(actual[4], "v3->v8"); + }, + + //////////////////////////////////////////////////////////////////////////////// + /// Test Neighbors + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////// + /// Any direction + //////////////////////////////////////////////////////////////////////////////// + + testNeighborsAny: function () { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: { + direction : 'any' + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 3); + assertEqual(actual[0].path.edges[0].what, "v1->v2"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v2"); + assertEqual(actual[1].path.edges[0].what, "v2->v1"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v2"); + assertEqual(actual[2].path.edges[0].what, "v1->v5"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v5"); + }, + + testNeighborsAnyEdgeExample: function () { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: { + direction : 'any', + edgeExamples : [{'what' : 'v2->v1'}] + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 1); assertEqual(actual[0].path.edges[0].what, "v2->v1"); - assertEqual(actual[0].vertex._key, "v2"); - }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks EDGES() -//////////////////////////////////////////////////////////////////////////////// - - testEdgesIn: function () { - var actual; - - actual = getQueryResults("FOR e IN GRAPH_EDGES('bla3', 'UnitTestsAhuacatlVertex3/v5', {direction : 'inbound'}) SORT e.what RETURN e.what"); - assertEqual(actual, [ "v1->v5", "v2->v5", "v3->v5"]); - - actual = getRawQueryResults("FOR e IN GRAPH_VERTICES('bla3', 'UnitTestsAhuacatlVertex3/v5', {direction : 'inbound'}) SORT e._id RETURN e"); - assertEqual(actual[0]._id, 'UnitTestsAhuacatlVertex3/v5'); - - actual = getRawQueryResults("FOR e IN GRAPH_VERTICES('bla3', [{hugo : true}, {heinz : 1}], {direction : 'inbound'}) SORT e._id RETURN e"); - assertEqual(actual[0]._id, 'UnitTestsAhuacatlVertex1/v1'); - assertEqual(actual[1]._id, 'UnitTestsAhuacatlVertex1/v2'); - assertEqual(actual[2]._id, 'UnitTestsAhuacatlVertex4/v8'); - assertTrue(actual.length === 3); - - - actual = getQueryResults("FOR e IN GRAPH_EDGES('bla3', 'UnitTestsAhuacatlVertex3/v5', {direction : 'inbound' ,edgeCollectionRestriction: 'UnitTestsAhuacatlEdge2'}) SORT e.what RETURN e.what"); - assertEqual(actual, [ "v1->v5", "v2->v5", "v3->v5"]); - - actual = getQueryResults("FOR e IN GRAPH_EDGES('bla3', 'UnitTestsAhuacatlVertex3/v5', {direction : 'inbound' , edgeExamples : [{'what' : 'v2->v5'}]}) SORT e.what RETURN e.what"); - assertEqual(actual, [ "v2->v5" ]); - - actual = getQueryResults("FOR e IN GRAPH_NEIGHBORS('bla3', 'UnitTestsAhuacatlVertex3/v5', {direction : 'inbound' , edgeExamples : [{'what' : 'v2->v5'}]}) SORT e.what RETURN e"); - assertEqual(actual[0].path.edges[0].what, "v2->v5"); + assertEqual(actual[0].path.edges.length, 1); assertEqual(actual[0].vertex._key, "v2"); }, + testNeighborsAnyStartExample: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'any' + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 10); + assertEqual(actual[0].path.edges[0].what, "v1->v2"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v1"); + assertEqual(actual[1].path.edges[0].what, "v2->v1"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v1"); + assertEqual(actual[2].path.edges[0].what, "v1->v2"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v2"); + assertEqual(actual[3].path.edges[0].what, "v2->v1"); + assertEqual(actual[3].path.edges.length, 1); + assertEqual(actual[3].vertex._key, "v2"); + assertEqual(actual[4].path.edges[0].what, "v3->v8"); + assertEqual(actual[4].path.edges.length, 1); + assertEqual(actual[4].vertex._key, "v3"); + assertEqual(actual[5].path.edges[0].what, "v1->v5"); + assertEqual(actual[5].path.edges.length, 1); + assertEqual(actual[5].vertex._key, "v5"); + assertEqual(actual[6].path.edges[0].what, "v2->v5"); + assertEqual(actual[6].path.edges.length, 1); + assertEqual(actual[6].vertex._key, "v5"); + assertEqual(actual[7].path.edges[0].what, "v3->v5"); + assertEqual(actual[7].path.edges.length, 1); + assertEqual(actual[7].vertex._key, "v5"); + assertEqual(actual[8].path.edges[0].what, "v3->v6"); + assertEqual(actual[8].path.edges.length, 1); + assertEqual(actual[8].vertex._key, "v6"); + assertEqual(actual[9].path.edges[0].what, "v3->v8"); + assertEqual(actual[9].path.edges.length, 1); + assertEqual(actual[9].vertex._key, "v8"); + }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks EDGES() -//////////////////////////////////////////////////////////////////////////////// + testNeighborsAnyVertexExample: function () { + var bindVars = { + name: gN, + example: {}, + options: { + direction : 'any', + neighborExamples: vertexExample + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 3); + assertEqual(actual[0].path.edges[0].what, "v1->v2"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v1"); + assertEqual(actual[1].path.edges[0].what, "v1->v5"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v1"); + assertEqual(actual[2].path.edges[0].what, "v2->v1"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v1"); + }, + testNeighborsAnyStartExampleRestrictEdges: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'any', + edgeCollectionRestriction: e2 + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 6); + assertEqual(actual[0].path.edges[0].what, "v3->v8"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v3"); + assertEqual(actual[1].path.edges[0].what, "v1->v5"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v5"); + assertEqual(actual[2].path.edges[0].what, "v2->v5"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v5"); + assertEqual(actual[3].path.edges[0].what, "v3->v5"); + assertEqual(actual[3].path.edges.length, 1); + assertEqual(actual[3].vertex._key, "v5"); + assertEqual(actual[4].path.edges[0].what, "v3->v6"); + assertEqual(actual[4].path.edges.length, 1); + assertEqual(actual[4].vertex._key, "v6"); + assertEqual(actual[5].path.edges[0].what, "v3->v8"); + assertEqual(actual[5].path.edges.length, 1); + assertEqual(actual[5].vertex._key, "v8"); + }, + + testNeighborsAnyStartExampleRestrictVertices: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'any', + vertexCollectionRestriction: [v1, v3] + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 8); + assertEqual(actual[0].path.edges[0].what, "v1->v2"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v1"); + assertEqual(actual[1].path.edges[0].what, "v2->v1"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v1"); + assertEqual(actual[2].path.edges[0].what, "v1->v2"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v2"); + assertEqual(actual[3].path.edges[0].what, "v2->v1"); + assertEqual(actual[3].path.edges.length, 1); + assertEqual(actual[3].vertex._key, "v2"); + assertEqual(actual[4].path.edges[0].what, "v1->v5"); + assertEqual(actual[4].path.edges.length, 1); + assertEqual(actual[4].vertex._key, "v5"); + assertEqual(actual[5].path.edges[0].what, "v2->v5"); + assertEqual(actual[5].path.edges.length, 1); + assertEqual(actual[5].vertex._key, "v5"); + assertEqual(actual[6].path.edges[0].what, "v3->v5"); + assertEqual(actual[6].path.edges.length, 1); + assertEqual(actual[6].vertex._key, "v5"); + assertEqual(actual[7].path.edges[0].what, "v3->v6"); + assertEqual(actual[7].path.edges.length, 1); + assertEqual(actual[7].vertex._key, "v6"); + }, + + testNeighborsAnyStartExampleRestrictEdgesAndVertices: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'any', + vertexCollectionRestriction: [v1, v3], + edgeCollectionRestriction: e2 + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 4); + assertEqual(actual[0].path.edges[0].what, "v1->v5"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v5"); + assertEqual(actual[1].path.edges[0].what, "v2->v5"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v5"); + assertEqual(actual[2].path.edges[0].what, "v3->v5"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v5"); + assertEqual(actual[3].path.edges[0].what, "v3->v6"); + assertEqual(actual[3].path.edges.length, 1); + assertEqual(actual[3].vertex._key, "v6"); + }, + + + //////////////////////////////////////////////////////////////////////////////// + /// direction outbound + //////////////////////////////////////////////////////////////////////////////// + + testNeighborsOutbound: function () { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: { + direction : 'outbound' + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 2); + assertEqual(actual[0].path.edges[0].what, "v1->v2"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v2"); + assertEqual(actual[1].path.edges[0].what, "v1->v5"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v5"); + }, + + testNeighborsOutboundEdgeExample: function () { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: { + direction : 'outbound', + edgeExamples : [{'what' : 'v1->v2'}, {'what' : 'v2->v1'}] + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 1); + assertEqual(actual[0].path.edges[0].what, "v1->v2"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v2"); + }, + + testNeighborsOutboundStartExample: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'outbound' + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 7); + assertEqual(actual[0].path.edges[0].what, "v2->v1"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v1"); + assertEqual(actual[1].path.edges[0].what, "v1->v2"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v2"); + assertEqual(actual[2].path.edges[0].what, "v1->v5"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v5"); + assertEqual(actual[3].path.edges[0].what, "v2->v5"); + assertEqual(actual[3].path.edges.length, 1); + assertEqual(actual[3].vertex._key, "v5"); + assertEqual(actual[4].path.edges[0].what, "v3->v5"); + assertEqual(actual[4].path.edges.length, 1); + assertEqual(actual[4].vertex._key, "v5"); + assertEqual(actual[5].path.edges[0].what, "v3->v6"); + assertEqual(actual[5].path.edges.length, 1); + assertEqual(actual[5].vertex._key, "v6"); + assertEqual(actual[6].path.edges[0].what, "v3->v8"); + assertEqual(actual[6].path.edges.length, 1); + assertEqual(actual[6].vertex._key, "v8"); + }, + + testNeighborsOutboundVertexExample: function () { + var bindVars = { + name: gN, + example: {}, + options: { + direction : 'outbound', + neighborExamples: vertexExample + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 1); + assertEqual(actual[0].path.edges[0].what, "v2->v1"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v1"); + }, + testNeighborsOutboundStartExampleRestrictEdges: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'outbound', + edgeCollectionRestriction: e2 + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 5); + assertEqual(actual[0].path.edges[0].what, "v1->v5"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v5"); + assertEqual(actual[1].path.edges[0].what, "v2->v5"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v5"); + assertEqual(actual[2].path.edges[0].what, "v3->v5"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v5"); + assertEqual(actual[3].path.edges[0].what, "v3->v6"); + assertEqual(actual[3].path.edges.length, 1); + assertEqual(actual[3].vertex._key, "v6"); + assertEqual(actual[4].path.edges[0].what, "v3->v8"); + assertEqual(actual[4].path.edges.length, 1); + assertEqual(actual[4].vertex._key, "v8"); + }, + + testNeighborsOutboundStartExampleRestrictVertices: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'outbound', + vertexCollectionRestriction: [v1, v3] + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 6); + assertEqual(actual[0].path.edges[0].what, "v2->v1"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v1"); + assertEqual(actual[1].path.edges[0].what, "v1->v2"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v2"); + assertEqual(actual[2].path.edges[0].what, "v1->v5"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v5"); + assertEqual(actual[3].path.edges[0].what, "v2->v5"); + assertEqual(actual[3].path.edges.length, 1); + assertEqual(actual[3].vertex._key, "v5"); + assertEqual(actual[4].path.edges[0].what, "v3->v5"); + assertEqual(actual[4].path.edges.length, 1); + assertEqual(actual[4].vertex._key, "v5"); + assertEqual(actual[5].path.edges[0].what, "v3->v6"); + assertEqual(actual[5].path.edges.length, 1); + assertEqual(actual[5].vertex._key, "v6"); + }, + + testNeighborsOutboundStartExampleRestrictEdgesAndVertices: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'outbound', + vertexCollectionRestriction: [v1, v3], + edgeCollectionRestriction: e2 + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 4); + assertEqual(actual[0].path.edges[0].what, "v1->v5"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v5"); + assertEqual(actual[1].path.edges[0].what, "v2->v5"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v5"); + assertEqual(actual[2].path.edges[0].what, "v3->v5"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v5"); + assertEqual(actual[3].path.edges[0].what, "v3->v6"); + assertEqual(actual[3].path.edges.length, 1); + assertEqual(actual[3].vertex._key, "v6"); + }, + + //////////////////////////////////////////////////////////////////////////////// + /// inbound direction + //////////////////////////////////////////////////////////////////////////////// + + testNeighborsInbound: function () { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: { + direction : 'inbound' + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 1); + assertEqual(actual[0].path.edges[0].what, "v2->v1"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v2"); + }, + + testNeighborsInboundEdgeExample: function () { + var bindVars = { + name: gN, + example: v1 + "/v1", + options: { + direction : 'inbound', + edgeExamples : [{'what' : 'v2->v1'}] + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 1); + assertEqual(actual[0].path.edges[0].what, "v2->v1"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v2"); + }, + + testNeighborsInboundStartExample: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'inbound' + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 3); + assertEqual(actual[0].path.edges[0].what, "v1->v2"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v1"); + assertEqual(actual[1].path.edges[0].what, "v2->v1"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v2"); + assertEqual(actual[2].path.edges[0].what, "v3->v8"); + assertEqual(actual[2].path.edges.length, 1); + assertEqual(actual[2].vertex._key, "v3"); + }, + + testNeighborsInboundNeighborExample: function () { + var bindVars = { + name: gN, + example: {}, + options: { + direction : 'inbound', + neighborExamples: vertexExample + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 2); + assertEqual(actual[0].path.edges[0].what, "v1->v2"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v1"); + assertEqual(actual[1].path.edges[0].what, "v1->v5"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v1"); + }, + + testNeighborsInboundStartExampleRestrictEdges: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'inbound', + edgeCollectionRestriction: e2 + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 1); + assertEqual(actual[0].path.edges[0].what, "v3->v8"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v3"); + }, + + testNeighborsInboundStartExampleRestrictVertices: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'inbound', + vertexCollectionRestriction: [v1, v3] + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 2); + assertEqual(actual[0].path.edges[0].what, "v1->v2"); + assertEqual(actual[0].path.edges.length, 1); + assertEqual(actual[0].vertex._key, "v1"); + assertEqual(actual[1].path.edges[0].what, "v2->v1"); + assertEqual(actual[1].path.edges.length, 1); + assertEqual(actual[1].vertex._key, "v2"); + }, + + testNeighborsInboundStartExampleRestrictEdgesAndVertices: function () { + var bindVars = { + name: gN, + example: startExample, + options: { + direction : 'inbound', + vertexCollectionRestriction: [v1, v3], + edgeCollectionRestriction: e2 + } + }; + var actual = getRawQueryResults(AQL_NEIGHBORS, bindVars); + assertEqual(actual.length, 0); + }, + + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks EDGES() OLD + //////////////////////////////////////////////////////////////////////////////// testEdgesOut: function () { var actual; - actual = getQueryResults("FOR e IN GRAPH_EDGES('bla3', 'UnitTestsAhuacatlVertex1/v1', {direction : 'outbound'}) SORT e.what RETURN e.what"); - assertEqual(actual, [ "v1->v2", "v1->v5"]); - - actual = getQueryResults("FOR e IN GRAPH_EDGES('bla3', 'UnitTestsAhuacatlVertex1/v1', {direction : 'outbound' ,edgeCollectionRestriction: 'UnitTestsAhuacatlEdge2'}) SORT e.what RETURN e.what"); - assertEqual(actual, [ "v1->v5"]); - actual = getQueryResults("FOR e IN GRAPH_EDGES('bla3', 'UnitTestsAhuacatlVertex1/v1', {direction : 'outbound' ,edgeExamples : [{'what' : 'v2->v5'}]}) SORT e.what RETURN e.what"); - assertEqual(actual, []); - actual = getQueryResults("FOR e IN GRAPH_NEIGHBORS('bla3', 'UnitTestsAhuacatlVertex1/v1', {direction : 'outbound' ,minDepth : 1, maxDepth : 3}) SORT e.vertex._key RETURN e"); assertEqual(actual[0].vertex._key, "v1"); assertEqual(actual[1].vertex._key, "v2"); @@ -228,13 +941,6 @@ function ahuacatlQueryGeneralEdgesTestSuite() { assertEqual(actual[0].vertex._key, "v1"); assertEqual(actual[1].vertex._key, "v2"); - actual = getRawQueryResults("FOR e IN GRAPH_VERTICES('bla3', [{hugo : true}, {heinz : 1}], {direction : 'outbound'}) SORT e._id RETURN e"); - assertEqual(actual[0]._id, 'UnitTestsAhuacatlVertex1/v1'); - assertEqual(actual[1]._id, 'UnitTestsAhuacatlVertex1/v2'); - assertEqual(actual[2]._id, 'UnitTestsAhuacatlVertex2/v3'); - assertTrue(actual.length === 3); - - actual = getQueryResults("FOR e IN GRAPH_NEIGHBORS('bla3', 'UnitTestsAhuacatlVertex1/v1', {direction : 'outbound'}) SORT e.what RETURN e"); assertEqual(actual[0].path.edges[0].what, "v1->v2"); assertEqual(actual[0].vertex._key, "v2"); @@ -256,9 +962,9 @@ function ahuacatlQueryGeneralEdgesTestSuite() { assertEqual(actual[2].vertex._key, "v5"); assertEqual(actual[3].vertex._key, "v5"); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks EDGES() exceptions -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks EDGES() exceptions + //////////////////////////////////////////////////////////////////////////////// testEdgesExceptions: function () { return undefined; @@ -274,9 +980,9 @@ function ahuacatlQueryGeneralEdgesTestSuite() { function ahuacatlQueryGeneralCommonTestSuite() { return { -//////////////////////////////////////////////////////////////////////////////// -/// @brief set up -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief set up + //////////////////////////////////////////////////////////////////////////////// setUp: function () { db._drop("UnitTestsAhuacatlVertex1"); @@ -326,9 +1032,9 @@ function ahuacatlQueryGeneralCommonTestSuite() { ); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief tear down -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief tear down + //////////////////////////////////////////////////////////////////////////////// tearDown: function () { db._drop("UnitTestsAhuacatlVertex1"); @@ -340,20 +1046,20 @@ function ahuacatlQueryGeneralCommonTestSuite() { } }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks GRAPH_COMMON_NEIGHBORS() and GRAPH_COMMON_PROPERTIES() -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks GRAPH_COMMON_NEIGHBORS() and GRAPH_COMMON_PROPERTIES() + //////////////////////////////////////////////////////////////////////////////// - testEdgesAny: function () { + testCommonNeighbors: function () { var actual = getQueryResults("FOR e IN GRAPH_COMMON_NEIGHBORS('bla3', 'UnitTestsAhuacatlVertex1/v3' , 'UnitTestsAhuacatlVertex2/v6', {direction : 'any'}) SORT ATTRIBUTES(e)[0] RETURN e"); assertEqual(actual[0]["UnitTestsAhuacatlVertex1/v3"]["UnitTestsAhuacatlVertex2/v6"][0]._id, "UnitTestsAhuacatlVertex1/v2"); assertEqual(actual[0]["UnitTestsAhuacatlVertex1/v3"]["UnitTestsAhuacatlVertex2/v6"][1]._id, "UnitTestsAhuacatlVertex2/v7"); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks GRAPH_COMMON_NEIGHBORS() -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks GRAPH_COMMON_NEIGHBORS() + //////////////////////////////////////////////////////////////////////////////// testCommonNeighborsIn: function () { var actual = getQueryResults("FOR e IN GRAPH_COMMON_NEIGHBORS('bla3', {} , {}, {direction : 'inbound'}, {direction : 'inbound'}) SORT TO_STRING(ATTRIBUTES(e)) RETURN e"); @@ -371,9 +1077,9 @@ function ahuacatlQueryGeneralCommonTestSuite() { assertEqual(actual[4]["UnitTestsAhuacatlVertex2/v8"]["UnitTestsAhuacatlVertex2/v7"][0]._id, "UnitTestsAhuacatlVertex1/v3"); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks GRAPH_COMMON_NEIGHBORS() -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks GRAPH_COMMON_NEIGHBORS() + //////////////////////////////////////////////////////////////////////////////// testCommonNeighborsOut: function () { var actual = getQueryResults("FOR e IN GRAPH_COMMON_NEIGHBORS('bla3', { hugo : true } , {heinz : 1}, " + @@ -392,34 +1098,38 @@ function ahuacatlQueryGeneralCommonTestSuite() { }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks GRAPH_COMMON_NEIGHBORS() -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks GRAPH_COMMON_NEIGHBORS() + //////////////////////////////////////////////////////////////////////////////// - testCommonNeighborsMixedOptions: function () { + testCommonNeighborsMixedOptionsDistinctFilters: function () { var actual = getQueryResults("FOR e IN GRAPH_COMMON_NEIGHBORS('bla3', {} , {}, " + "{direction : 'outbound', vertexCollectionRestriction : 'UnitTestsAhuacatlVertex1'}, " + "{direction : 'inbound', minDepth : 1, maxDepth : 2, vertexCollectionRestriction : 'UnitTestsAhuacatlVertex2'}) SORT TO_STRING(e) RETURN e"); - assertEqual(Object.keys(actual[0])[0], "UnitTestsAhuacatlVertex1/v2"); - assertEqual(Object.keys(actual[0][Object.keys(actual[0])[0]]).sort(), ["UnitTestsAhuacatlVertex2/v5", "UnitTestsAhuacatlVertex2/v7", "UnitTestsAhuacatlVertex2/v8"]); + assertEqual(actual.length, 0); + }, - assertEqual(actual[0][Object.keys(actual[0])[0]]["UnitTestsAhuacatlVertex2/v5"].length, 1); - assertEqual(actual[0][Object.keys(actual[0])[0]]["UnitTestsAhuacatlVertex2/v8"].length, 1); - assertEqual(actual[0][Object.keys(actual[0])[0]]["UnitTestsAhuacatlVertex2/v7"].length, 2); + testCommonNeighborsMixedOptionsFilterBasedOnOneCollectionOnly: function () { + var actual = getQueryResults("FOR e IN GRAPH_COMMON_NEIGHBORS('bla3', {} , {}, " + + "{direction : 'outbound', vertexCollectionRestriction : 'UnitTestsAhuacatlVertex2'}, " + + "{direction : 'inbound', minDepth : 1, maxDepth : 2, vertexCollectionRestriction : 'UnitTestsAhuacatlVertex2'}) SORT TO_STRING(e) RETURN e"); - assertEqual(Object.keys(actual[1])[0], "UnitTestsAhuacatlVertex1/v1"); - assertEqual(Object.keys(actual[1][Object.keys(actual[1])[0]]).sort(), ["UnitTestsAhuacatlVertex2/v5", "UnitTestsAhuacatlVertex2/v6", "UnitTestsAhuacatlVertex2/v7", "UnitTestsAhuacatlVertex2/v8"]); + assertEqual(Object.keys(actual[0])[0], "UnitTestsAhuacatlVertex1/v3"); + assertEqual(Object.keys(actual[0][Object.keys(actual[0])[0]]).sort(), ["UnitTestsAhuacatlVertex1/v1", "UnitTestsAhuacatlVertex1/v2"]); + + assertEqual(actual[0][Object.keys(actual[0])[0]]["UnitTestsAhuacatlVertex1/v1"].length, 1); + assertEqual(actual[0][Object.keys(actual[0])[0]]["UnitTestsAhuacatlVertex1/v2"].length, 1); + + assertEqual(Object.keys(actual[1])[0], "UnitTestsAhuacatlVertex1/v2"); + assertEqual(Object.keys(actual[1][Object.keys(actual[1])[0]]).sort(), ["UnitTestsAhuacatlVertex2/v7"]); - assertEqual(actual[1][Object.keys(actual[1])[0]]["UnitTestsAhuacatlVertex2/v6"].length, 1); - assertEqual(actual[1][Object.keys(actual[1])[0]]["UnitTestsAhuacatlVertex2/v5"].length, 1); - assertEqual(actual[1][Object.keys(actual[1])[0]]["UnitTestsAhuacatlVertex2/v8"].length, 1); assertEqual(actual[1][Object.keys(actual[1])[0]]["UnitTestsAhuacatlVertex2/v7"].length, 1); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks GRAPH_COMMON_PROPERTIES() -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks GRAPH_COMMON_PROPERTIES() + //////////////////////////////////////////////////////////////////////////////// testCommonProperties: function () { var actual = getQueryResults("FOR e IN GRAPH_COMMON_PROPERTIES('bla3', { } , {}, {}) SORT ATTRIBUTES(e)[0] RETURN e"); @@ -468,9 +1178,9 @@ function ahuacatlQueryGeneralCommonTestSuite() { function ahuacatlQueryGeneralPathsTestSuite() { return { -//////////////////////////////////////////////////////////////////////////////// -/// @brief set up -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief set up + //////////////////////////////////////////////////////////////////////////////// setUp: function () { db._drop("UnitTestsAhuacatlVertex1"); @@ -525,9 +1235,9 @@ function ahuacatlQueryGeneralPathsTestSuite() { makeEdge(v3._id, v5._id, g[e2]); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief tear down -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief tear down + //////////////////////////////////////////////////////////////////////////////// tearDown: function () { db._drop("UnitTestsAhuacatlVertex1"); @@ -539,15 +1249,15 @@ function ahuacatlQueryGeneralPathsTestSuite() { db._collection("_graphs").remove("_graphs/bla3"); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks GRAPH_PATHS() -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks GRAPH_PATHS() + //////////////////////////////////////////////////////////////////////////////// testPaths: function () { var actual; actual = getQueryResults( - "FOR e IN GRAPH_PATHS('bla3') " + "FOR e IN GRAPH_PATHS('bla3') " + "LET length = LENGTH(e.edges) " + "SORT e.source._key, e.destination._key, length " + "RETURN {src: e.source._key, dest: e.destination._key, edges: e.edges, length: length}" @@ -556,80 +1266,80 @@ function ahuacatlQueryGeneralPathsTestSuite() { actual.forEach(function (p) { switch (p.src) { case "v1": - switch (p.dest) { - case "v1": - assertEqual(p.length, 0); - break; - case "v2": - assertEqual(p.length, 1); - assertEqual(p.edges[0].what, "v1->v2"); - break; - case "v5": - if (p.length === 1) { - assertEqual(p.edges[0].what, "v1->v5"); + switch (p.dest) { + case "v1": + assertEqual(p.length, 0); + break; + case "v2": + assertEqual(p.length, 1); + assertEqual(p.edges[0].what, "v1->v2"); + break; + case "v5": + if (p.length === 1) { + assertEqual(p.edges[0].what, "v1->v5"); - } else { - assertEqual(p.length, 2); - assertEqual(p.edges[0].what, "v1->v2"); - assertEqual(p.edges[1].what, "v2->v5"); - } - break; - default: - fail("Found unknown path"); + } else { + assertEqual(p.length, 2); + assertEqual(p.edges[0].what, "v1->v2"); + assertEqual(p.edges[1].what, "v2->v5"); } break; - case "v2": - switch (p.dest) { - case "v2": - assertEqual(p.length, 0); - break; - case "v1": - assertEqual(p.length, 1); - assertEqual(p.edges[0].what, "v2->v1"); - break; - case "v5": - if (p.length === 1) { - assertEqual(p.edges[0].what, "v2->v5"); - - } else { - assertEqual(p.length, 2); - assertEqual(p.edges[0].what, "v2->v1"); - assertEqual(p.edges[1].what, "v1->v5"); - } - break; - default: - fail("Found unknown path"); - } - break; - case "v3": - switch (p.dest) { - case "v3": - assertEqual(p.length, 0); - break; - case "v5": - assertEqual(p.length, 1); - assertEqual(p.edges[0].what, "v3->v5"); - break; - default: - fail("Found unknown path"); - } - break; - case "v4": - switch (p.dest) { - case "v4": - assertEqual(p.length, 0); - break; - case "v7": - assertEqual(p.length, 1); - assertEqual(p.edges[0].what, "v4->v7"); - break; - default: - fail("Found unknown path"); - } - break; - - default: + default: fail("Found unknown path"); + } + break; + case "v2": + switch (p.dest) { + case "v2": + assertEqual(p.length, 0); + break; + case "v1": + assertEqual(p.length, 1); + assertEqual(p.edges[0].what, "v2->v1"); + break; + case "v5": + if (p.length === 1) { + assertEqual(p.edges[0].what, "v2->v5"); + + } else { + assertEqual(p.length, 2); + assertEqual(p.edges[0].what, "v2->v1"); + assertEqual(p.edges[1].what, "v1->v5"); + } + break; + default: + fail("Found unknown path"); + } + break; + case "v3": + switch (p.dest) { + case "v3": + assertEqual(p.length, 0); + break; + case "v5": + assertEqual(p.length, 1); + assertEqual(p.edges[0].what, "v3->v5"); + break; + default: + fail("Found unknown path"); + } + break; + case "v4": + switch (p.dest) { + case "v4": + assertEqual(p.length, 0); + break; + case "v7": + assertEqual(p.length, 1); + assertEqual(p.edges[0].what, "v4->v7"); + break; + default: + fail("Found unknown path"); + } + break; + + default: + fail("Found unknown path"); } }); }, @@ -698,9 +1408,9 @@ function ahuacatlQueryGeneralPathsTestSuite() { function ahuacatlQueryGeneralTraversalTestSuite() { return { -//////////////////////////////////////////////////////////////////////////////// -/// @brief set up -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief set up + //////////////////////////////////////////////////////////////////////////////// setUp: function () { db._drop("UnitTests_Berliner"); @@ -756,9 +1466,9 @@ function ahuacatlQueryGeneralTraversalTestSuite() { makeEdge(Emil._id, Fritz._id, g[KenntAnderen], 0.2); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief tear down -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief tear down + //////////////////////////////////////////////////////////////////////////////// tearDown: function () { db._drop("UnitTests_Berliner"); @@ -770,9 +1480,9 @@ function ahuacatlQueryGeneralTraversalTestSuite() { db._collection("_graphs").remove("_graphs/werKenntWen"); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks GRAPH_TRAVERSAL() -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks GRAPH_TRAVERSAL() + //////////////////////////////////////////////////////////////////////////////// testGRAPH_TRAVERSALs: function () { var actual, result = []; @@ -977,682 +1687,682 @@ function ahuacatlQueryGeneralTraversalTestSuite() { 0 ] ] - ); + ); - actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', {}, " + - "{}, {direction : 'inbound', algorithm : 'djikstra'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id, e.distance]"); - assertEqual(actual, [ - [ - "UnitTests_Berliner/Anton", - "UnitTests_Berliner/Anton", - 0 - ], - [ - "UnitTests_Berliner/Anton", - "UnitTests_Berliner/Berta", - 1 - ], - [ - "UnitTests_Berliner/Anton", - "UnitTests_Hamburger/Caesar", - 1 - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Berliner/Berta", - 0 - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Hamburger/Caesar", - 1 - ], - [ - "UnitTests_Frankfurter/Emil", - "UnitTests_Berliner/Berta", - 3 - ], - [ - "UnitTests_Frankfurter/Emil", - "UnitTests_Frankfurter/Emil", - 0 - ], - [ - "UnitTests_Frankfurter/Emil", - "UnitTests_Hamburger/Caesar", - 4 - ], - [ - "UnitTests_Frankfurter/Emil", - "UnitTests_Hamburger/Dieter", - 1 - ], - [ - "UnitTests_Frankfurter/Emil", - "UnitTests_Leipziger/Gerda", - 2 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Berliner/Berta", - 4 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Frankfurter/Emil", - 1 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Frankfurter/Fritz", - 0 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Hamburger/Caesar", - 5 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Hamburger/Dieter", - 2 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Leipziger/Gerda", - 3 - ], - [ - "UnitTests_Hamburger/Caesar", - "UnitTests_Hamburger/Caesar", - 0 - ], - [ - "UnitTests_Hamburger/Dieter", - "UnitTests_Berliner/Berta", - 2 - ], - [ - "UnitTests_Hamburger/Dieter", - "UnitTests_Hamburger/Caesar", - 3 - ], - [ - "UnitTests_Hamburger/Dieter", - "UnitTests_Hamburger/Dieter", - 0 - ], - [ - "UnitTests_Hamburger/Dieter", - "UnitTests_Leipziger/Gerda", - 1 - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Berliner/Berta", - 1 - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Hamburger/Caesar", - 2 - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Leipziger/Gerda", - 0 - ] - ] - ); - - actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', {}, " + - "{_id : 'UnitTests_Berliner/Berta'}, {direction : 'inbound', algorithm : 'djikstra'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id, e.distance]"); - assertEqual(actual,[ - [ - "UnitTests_Berliner/Anton", - "UnitTests_Berliner/Berta", - 1 - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Berliner/Berta", - 0 - ], - [ - "UnitTests_Frankfurter/Emil", - "UnitTests_Berliner/Berta", - 3 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Berliner/Berta", - 4 - ], - [ - "UnitTests_Hamburger/Dieter", - "UnitTests_Berliner/Berta", - 2 - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Berliner/Berta", - 1 - ] + actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', {}, " + + "{}, {direction : 'inbound', algorithm : 'djikstra'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id, e.distance]"); + assertEqual(actual, [ + [ + "UnitTests_Berliner/Anton", + "UnitTests_Berliner/Anton", + 0 + ], + [ + "UnitTests_Berliner/Anton", + "UnitTests_Berliner/Berta", + 1 + ], + [ + "UnitTests_Berliner/Anton", + "UnitTests_Hamburger/Caesar", + 1 + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Berliner/Berta", + 0 + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Hamburger/Caesar", + 1 + ], + [ + "UnitTests_Frankfurter/Emil", + "UnitTests_Berliner/Berta", + 3 + ], + [ + "UnitTests_Frankfurter/Emil", + "UnitTests_Frankfurter/Emil", + 0 + ], + [ + "UnitTests_Frankfurter/Emil", + "UnitTests_Hamburger/Caesar", + 4 + ], + [ + "UnitTests_Frankfurter/Emil", + "UnitTests_Hamburger/Dieter", + 1 + ], + [ + "UnitTests_Frankfurter/Emil", + "UnitTests_Leipziger/Gerda", + 2 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Berliner/Berta", + 4 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Frankfurter/Emil", + 1 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Frankfurter/Fritz", + 0 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Hamburger/Caesar", + 5 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Hamburger/Dieter", + 2 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Leipziger/Gerda", + 3 + ], + [ + "UnitTests_Hamburger/Caesar", + "UnitTests_Hamburger/Caesar", + 0 + ], + [ + "UnitTests_Hamburger/Dieter", + "UnitTests_Berliner/Berta", + 2 + ], + [ + "UnitTests_Hamburger/Dieter", + "UnitTests_Hamburger/Caesar", + 3 + ], + [ + "UnitTests_Hamburger/Dieter", + "UnitTests_Hamburger/Dieter", + 0 + ], + [ + "UnitTests_Hamburger/Dieter", + "UnitTests_Leipziger/Gerda", + 1 + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Berliner/Berta", + 1 + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Hamburger/Caesar", + 2 + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Leipziger/Gerda", + 0 ] - ); - - - actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', 'UnitTests_Hamburger/Caesar', " + - " 'UnitTests_Berliner/Anton', {direction : 'outbound', weight: 'entfernung', algorithm : 'Floyd-Warshall'}) SORT e.startVertex, e.vertex._id RETURN e.paths[0].vertices"); - assertEqual(actual[0].length, 3); - - actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', 'UnitTests_Hamburger/Caesar', " + - " 'UnitTests_Berliner/Anton', {direction : 'outbound', algorithm : 'Floyd-Warshall'}) SORT e.startVertex, e.vertex._id RETURN e.paths[0].vertices"); - assertEqual(actual[0].length, 2); - - actual = getQueryResults("FOR e IN GRAPH_DISTANCE_TO('werKenntWen', 'UnitTests_Hamburger/Caesar', 'UnitTests_Frankfurter/Emil', " + - "{direction : 'outbound', weight: 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'}) RETURN [e.startVertex, e.vertex._id, e.distance]"); - assertEqual(actual, - [ - [ - "UnitTests_Hamburger/Caesar", - "UnitTests_Frankfurter/Emil", - 830.1 - ] - ] - ); - - - }, - - testGRAPH_SHORTEST_PATH_WITH_DIJSKTRA: function () { - var actual; - - actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', 'UnitTests_Hamburger/Caesar', " + - " 'UnitTests_Frankfurter/Emil', {direction : 'outbound', algorithm : 'dijkstra'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id]"); - assertEqual(actual, - [ - [ - "UnitTests_Hamburger/Caesar", - "UnitTests_Frankfurter/Emil" - ] - ] - ); - - actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', 'UnitTests_Hamburger/Caesar', " + - " 'UnitTests_Berliner/Anton', {direction : 'outbound', weight: 'entfernung', algorithm : 'dijkstra'}) SORT e.startVertex, e.vertex._id RETURN e.paths[0].vertices"); - assertEqual(actual[0].length, 3); - - actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', 'UnitTests_Hamburger/Caesar', " + - " 'UnitTests_Berliner/Anton', {direction : 'outbound', algorithm : 'dijkstra'}) SORT e.startVertex, e.vertex._id RETURN e.path.vertices"); - assertEqual(actual[0].length, 2); - - actual = getQueryResults("FOR e IN GRAPH_DISTANCE_TO('werKenntWen', 'UnitTests_Hamburger/Caesar', 'UnitTests_Frankfurter/Emil', " + - "{direction : 'outbound', weight: 'entfernung', defaultWeight : 80, algorithm : 'dijkstra'}) RETURN [e.startVertex, e.vertex._id, e.distance]"); - assertEqual(actual, - [ - [ - "UnitTests_Hamburger/Caesar", - "UnitTests_Frankfurter/Emil", - 830.1 - ] - ] - ); - - - }, - - testGRAPH_CLOSENESS: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.69); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.92); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.73); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.55); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.69); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.92); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - - - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.89); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.89); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.63); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.63); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.54); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.95); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - - - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_CLOSENESS('werKenntWen', {gender: 'male'}, {weight : 'entfernung', defaultWeight : 80})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(1), 1890.9); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(1), 2670.4); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 2671.4); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(1), 3140.9); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(1), 1770.4); - }, - - - testGRAPH_CLOSENESS_OUTBOUND: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {direction : 'outbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.94); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(1), 0.3); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.46); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(2), 0.56); - - - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, direction : 'outbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(1), 0.5); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(3), 0.001); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(3), 0.001); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(3), 0.002); - }, - - testGRAPH_CLOSENESS_INBOUND: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.88); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.44); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.91); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(1), 0.8); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(2), 0.66); - - - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, direction : 'inbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(4), 0.0004); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(4), 0.0009); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.5); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(3), 0.002); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(4), 0.0007); - }, - - - testGRAPH_ECCENTRICITY: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(1), 0.6); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.75); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.75); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.6); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(1), 0.6); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 1); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - - actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.25); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.2); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.33); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(1), 0.5); - - - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_ECCENTRICITY('werKenntWen', {gender : 'female'}, {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 2); - - - actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.78); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.78); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.54); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.54); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.54); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.85); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - - - }, - - testGRAPH_BETWEENNESS: function () { - var actual; - - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 16); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 10); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 16); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 18); - - - actual = getQueryResults("RETURN GRAPH_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.89); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.56); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.89); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - - - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 4); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 4); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 6); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 6); - - actual = getQueryResults("RETURN GRAPH_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.67); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.67); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 1); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - - - - actual = getQueryResults("RETURN GRAPH_BETWEENNESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.56); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.89); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - - - }, - - testGRAPH_DIAMETER_AND_RADIUS: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 3); - - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0].toFixed(1), 450.1); - - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 5); - - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0].toFixed(1), 830.3); - - - - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 1); - - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'inbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0].toFixed(1), 250.1); - - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 5); - - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'inbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0].toFixed(1), 830.3); - - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'outbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 1); - - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'outbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0].toFixed(1), 0.2); - - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'outbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 5); - - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'outbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0].toFixed(1), 830.3); - - - - }, - - testGRAPH_SHORTEST_PATHWithExamples: function () { - var actual; - - actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', {gender : 'female'}, {gender : 'male', age : 30}, " + - "{direction : 'any', algorithm : 'Floyd-Warshall'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id]"); - assertEqual(actual, [ - [ - "UnitTests_Berliner/Berta", - "UnitTests_Frankfurter/Fritz" - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Hamburger/Caesar" - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Frankfurter/Fritz" - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Hamburger/Caesar" - ] + ] + ); + + actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', {}, " + + "{_id : 'UnitTests_Berliner/Berta'}, {direction : 'inbound', algorithm : 'djikstra'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id, e.distance]"); + assertEqual(actual,[ + [ + "UnitTests_Berliner/Anton", + "UnitTests_Berliner/Berta", + 1 + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Berliner/Berta", + 0 + ], + [ + "UnitTests_Frankfurter/Emil", + "UnitTests_Berliner/Berta", + 3 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Berliner/Berta", + 4 + ], + [ + "UnitTests_Hamburger/Dieter", + "UnitTests_Berliner/Berta", + 2 + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Berliner/Berta", + 1 + ] + ] +); + + +actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', 'UnitTests_Hamburger/Caesar', " + + " 'UnitTests_Berliner/Anton', {direction : 'outbound', weight: 'entfernung', algorithm : 'Floyd-Warshall'}) SORT e.startVertex, e.vertex._id RETURN e.paths[0].vertices"); +assertEqual(actual[0].length, 3); + +actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', 'UnitTests_Hamburger/Caesar', " + + " 'UnitTests_Berliner/Anton', {direction : 'outbound', algorithm : 'Floyd-Warshall'}) SORT e.startVertex, e.vertex._id RETURN e.paths[0].vertices"); +assertEqual(actual[0].length, 2); + +actual = getQueryResults("FOR e IN GRAPH_DISTANCE_TO('werKenntWen', 'UnitTests_Hamburger/Caesar', 'UnitTests_Frankfurter/Emil', " + + "{direction : 'outbound', weight: 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'}) RETURN [e.startVertex, e.vertex._id, e.distance]"); +assertEqual(actual, + [ + [ + "UnitTests_Hamburger/Caesar", + "UnitTests_Frankfurter/Emil", + 830.1 + ] + ] +); + + +}, + +testGRAPH_SHORTEST_PATH_WITH_DIJSKTRA: function () { + var actual; + + actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', 'UnitTests_Hamburger/Caesar', " + + " 'UnitTests_Frankfurter/Emil', {direction : 'outbound', algorithm : 'dijkstra'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id]"); + assertEqual(actual, + [ + [ + "UnitTests_Hamburger/Caesar", + "UnitTests_Frankfurter/Emil" ] - ); + ] + ); - actual = getQueryResults("FOR e IN GRAPH_DISTANCE_TO('werKenntWen', {gender : 'female'}, {gender : 'male', age : 30}, " + - "{direction : 'any'}) SORT e.startVertex, e.vertex._id SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id, e.distance]"); - assertEqual(actual, [ - [ - "UnitTests_Berliner/Berta", - "UnitTests_Frankfurter/Fritz", - 4 - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Hamburger/Caesar", - 1 + actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', 'UnitTests_Hamburger/Caesar', " + + " 'UnitTests_Berliner/Anton', {direction : 'outbound', weight: 'entfernung', algorithm : 'dijkstra'}) SORT e.startVertex, e.vertex._id RETURN e.paths[0].vertices"); + assertEqual(actual[0].length, 3); - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Frankfurter/Fritz", - 3 - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Hamburger/Caesar", - 2 - ] + actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', 'UnitTests_Hamburger/Caesar', " + + " 'UnitTests_Berliner/Anton', {direction : 'outbound', algorithm : 'dijkstra'}) SORT e.startVertex, e.vertex._id RETURN e.path.vertices"); + assertEqual(actual[0].length, 2); + + actual = getQueryResults("FOR e IN GRAPH_DISTANCE_TO('werKenntWen', 'UnitTests_Hamburger/Caesar', 'UnitTests_Frankfurter/Emil', " + + "{direction : 'outbound', weight: 'entfernung', defaultWeight : 80, algorithm : 'dijkstra'}) RETURN [e.startVertex, e.vertex._id, e.distance]"); + assertEqual(actual, + [ + [ + "UnitTests_Hamburger/Caesar", + "UnitTests_Frankfurter/Emil", + 830.1 ] - ); + ] + ); - }, +}, - testGRAPH_CLOSENESS_WITH_DIJSKTRA: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra'})"); - - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.69); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.92); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.73); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.55); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.69); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.92); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); +testGRAPH_CLOSENESS: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.69); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.92); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.73); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.55); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.69); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.92); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.89); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.89); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.63); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.63); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.54); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.95); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - - }, + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.89); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.89); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.63); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.63); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.54); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.95); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - testGRAPH_CLOSENESS_OUTBOUND_WITH_DIJSKTRA: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra', direction : 'outbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.94); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(1), 0.3); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.46); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(2), 0.56); + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_CLOSENESS('werKenntWen', {gender: 'male'}, {weight : 'entfernung', defaultWeight : 80})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(1), 1890.9); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(1), 2670.4); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 2671.4); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(1), 3140.9); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(1), 1770.4); +}, - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80, direction : 'outbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(1), 0.5); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(3), 0.001); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(3), 0.001); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(3), 0.002); - }, +testGRAPH_CLOSENESS_OUTBOUND: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {direction : 'outbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.94); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(1), 0.3); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.46); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(2), 0.56); - testGRAPH_CLOSENESS_INBOUND_WITH_DIJSKTRA: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra', direction : 'inbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.88); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.44); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.91); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(1), 0.8); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(2), 0.66); + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, direction : 'outbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(1), 0.5); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(3), 0.001); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(3), 0.001); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(3), 0.002); +}, - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80, direction : 'inbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(4), 0.0004); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(4), 0.0009); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.5); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(3), 0.002); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(4), 0.0007); - - }, +testGRAPH_CLOSENESS_INBOUND: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.88); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.44); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.91); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(1), 0.8); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(2), 0.66); - testGRAPH_ECCENTRICITY_WITH_DIJSKTRA: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'dijkstra'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(1), 0.6); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.75); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.75); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.6); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(1), 0.6); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 1); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, direction : 'inbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(4), 0.0004); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(4), 0.0009); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.5); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(3), 0.002); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(4), 0.0007); +}, - actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen')"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(1), 0.6); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.75); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.75); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.6); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(1), 0.6); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 1); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); +testGRAPH_ECCENTRICITY: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(1), 0.6); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.75); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.75); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.6); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(1), 0.6); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 1); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); + + actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.25); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.2); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.33); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(1), 0.5); - actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'dijkstra', direction : 'inbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.25); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.2); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.33); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(1), 0.5); - - actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.78); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.78); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.54); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.54); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.54); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.85); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); - }, - - testGRAPH_DIAMETER_AND_RADIUS_WITH_DIJSKTRA: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {algorithm : 'dijkstra'})"); - assertEqual(actual[0], 3); - - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80})"); - assertEqual(actual[0].toFixed(1), 450.1); - - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {algorithm : 'dijkstra'})"); - assertEqual(actual[0], 5); - - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80})"); - assertEqual(actual[0].toFixed(1), 830.3); - }, - - testGRAPH_SHORTEST_PATHWithExamples_WITH_DIJSKTRA: function () { - var actual; - - actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', {gender : 'female'}, {gender : 'male', age : 30}, " + - "{direction : 'any'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id]"); - assertEqual(actual, [ - [ - "UnitTests_Berliner/Berta", - "UnitTests_Frankfurter/Fritz" - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Hamburger/Caesar" - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Frankfurter/Fritz" - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Hamburger/Caesar" - ] - ] - ); - - actual = getQueryResults("FOR e IN GRAPH_DISTANCE_TO('werKenntWen', {gender : 'female'}, {gender : 'male', age : 30}, " + - "{direction : 'any'}) SORT e.startVertex, e.vertex._id SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id, e.distance]"); - assertEqual(actual, [ - [ - "UnitTests_Berliner/Berta", - "UnitTests_Frankfurter/Fritz", - 4 - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Hamburger/Caesar", - 1 - - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Frankfurter/Fritz", - 3 - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Hamburger/Caesar", - 2 - ] - ] - ); + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_ECCENTRICITY('werKenntWen', {gender : 'female'}, {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 2); - } - }; + actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.78); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.78); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.54); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.54); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.54); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.85); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); + + +}, + +testGRAPH_BETWEENNESS: function () { + var actual; + + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 16); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 10); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 16); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 18); + + + actual = getQueryResults("RETURN GRAPH_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.89); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.56); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.89); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); + + + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 4); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 4); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 6); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 6); + + actual = getQueryResults("RETURN GRAPH_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.67); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.67); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 1); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); + + + + actual = getQueryResults("RETURN GRAPH_BETWEENNESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.56); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.89); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); + + +}, + +testGRAPH_DIAMETER_AND_RADIUS: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 3); + + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0].toFixed(1), 450.1); + + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 5); + + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0].toFixed(1), 830.3); + + + + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 1); + + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'inbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0].toFixed(1), 250.1); + + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 5); + + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'inbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0].toFixed(1), 830.3); + + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'outbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 1); + + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'outbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0].toFixed(1), 0.2); + + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'outbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 5); + + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'outbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0].toFixed(1), 830.3); + + + +}, + +testGRAPH_SHORTEST_PATHWithExamples: function () { + var actual; + + actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', {gender : 'female'}, {gender : 'male', age : 30}, " + + "{direction : 'any', algorithm : 'Floyd-Warshall'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id]"); + assertEqual(actual, [ + [ + "UnitTests_Berliner/Berta", + "UnitTests_Frankfurter/Fritz" + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Hamburger/Caesar" + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Frankfurter/Fritz" + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Hamburger/Caesar" + ] + ] +); + +actual = getQueryResults("FOR e IN GRAPH_DISTANCE_TO('werKenntWen', {gender : 'female'}, {gender : 'male', age : 30}, " + + "{direction : 'any'}) SORT e.startVertex, e.vertex._id SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id, e.distance]"); +assertEqual(actual, [ + [ + "UnitTests_Berliner/Berta", + "UnitTests_Frankfurter/Fritz", + 4 + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Hamburger/Caesar", + 1 + + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Frankfurter/Fritz", + 3 + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Hamburger/Caesar", + 2 + ] +] +); + + +}, + +testGRAPH_CLOSENESS_WITH_DIJSKTRA: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra'})"); + + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.69); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.92); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.73); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.55); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.69); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.92); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); + + + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.89); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.89); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.63); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.63); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.54); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.95); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); + +}, + + +testGRAPH_CLOSENESS_OUTBOUND_WITH_DIJSKTRA: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra', direction : 'outbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.94); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(1), 0.3); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.46); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(2), 0.56); + + + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80, direction : 'outbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(1), 0.5); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(3), 0.001); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(3), 0.001); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(3), 0.002); +}, + + +testGRAPH_CLOSENESS_INBOUND_WITH_DIJSKTRA: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra', direction : 'inbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.88); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.44); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.91); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(1), 0.8); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(2), 0.66); + + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80, direction : 'inbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(4), 0.0004); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(4), 0.0009); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.5); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(3), 0.002); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(4), 0.0007); + +}, + + +testGRAPH_ECCENTRICITY_WITH_DIJSKTRA: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'dijkstra'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(1), 0.6); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.75); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.75); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.6); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(1), 0.6); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 1); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); + + + actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen')"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(1), 0.6); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.75); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.75); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.6); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(1), 0.6); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 1); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); + + + actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'dijkstra', direction : 'inbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.25); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.2); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.33); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"].toFixed(1), 0.5); + + actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.78); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.78); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"].toFixed(2), 0.54); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.54); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.54); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"].toFixed(2), 0.85); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 1); +}, + +testGRAPH_DIAMETER_AND_RADIUS_WITH_DIJSKTRA: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {algorithm : 'dijkstra'})"); + assertEqual(actual[0], 3); + + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80})"); + assertEqual(actual[0].toFixed(1), 450.1); + + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {algorithm : 'dijkstra'})"); + assertEqual(actual[0], 5); + + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {algorithm : 'dijkstra', weight : 'entfernung', defaultWeight : 80})"); + assertEqual(actual[0].toFixed(1), 830.3); +}, + +testGRAPH_SHORTEST_PATHWithExamples_WITH_DIJSKTRA: function () { + var actual; + + actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', {gender : 'female'}, {gender : 'male', age : 30}, " + + "{direction : 'any'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id]"); + assertEqual(actual, [ + [ + "UnitTests_Berliner/Berta", + "UnitTests_Frankfurter/Fritz" + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Hamburger/Caesar" + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Frankfurter/Fritz" + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Hamburger/Caesar" + ] + ] +); + +actual = getQueryResults("FOR e IN GRAPH_DISTANCE_TO('werKenntWen', {gender : 'female'}, {gender : 'male', age : 30}, " + + "{direction : 'any'}) SORT e.startVertex, e.vertex._id SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id, e.distance]"); +assertEqual(actual, [ + [ + "UnitTests_Berliner/Berta", + "UnitTests_Frankfurter/Fritz", + 4 + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Hamburger/Caesar", + 1 + + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Frankfurter/Fritz", + 3 + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Hamburger/Caesar", + 2 + ] +] +); + + +} +}; } @@ -1663,9 +2373,9 @@ function ahuacatlQueryGeneralTraversalTestSuite() { function ahuacatlQueryGeneralCyclesSuite() { return { -//////////////////////////////////////////////////////////////////////////////// -/// @brief set up -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief set up + //////////////////////////////////////////////////////////////////////////////// setUp: function () { db._drop("UnitTests_Berliner"); @@ -1720,9 +2430,9 @@ function ahuacatlQueryGeneralCyclesSuite() { makeEdge(Berta._id, Anton._id, g[KenntAnderen], 3); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief tear down -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief tear down + //////////////////////////////////////////////////////////////////////////////// tearDown: function () { db._drop("UnitTests_Berliner"); @@ -1734,9 +2444,9 @@ function ahuacatlQueryGeneralCyclesSuite() { db._collection("_graphs").remove("_graphs/werKenntWen"); }, -//////////////////////////////////////////////////////////////////////////////// -/// @brief checks GRAPH_TRAVERSAL() -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /// @brief checks GRAPH_TRAVERSAL() + //////////////////////////////////////////////////////////////////////////////// testGRAPH_SHORTEST_PATH: function () { var actual; @@ -1840,335 +2550,335 @@ function ahuacatlQueryGeneralCyclesSuite() { 0 ] ] - ); + ); - actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', {}, " + - "{}, {direction : 'inbound', algorithm : 'djikstra'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id, e.distance]"); - assertEqual(actual, [ - [ - "UnitTests_Berliner/Anton", - "UnitTests_Berliner/Anton", - 0 - ], - [ - "UnitTests_Berliner/Anton", - "UnitTests_Berliner/Berta", - 1 - ], - [ - "UnitTests_Berliner/Anton", - "UnitTests_Frankfurter/Fritz", - 3 - ], - [ - "UnitTests_Berliner/Anton", - "UnitTests_Hamburger/Caesar", - 2 - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Berliner/Anton", - 1 - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Berliner/Berta", - 0 - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Frankfurter/Fritz", - 2 - ], - [ - "UnitTests_Berliner/Berta", - "UnitTests_Hamburger/Caesar", - 1 - ], - [ - "UnitTests_Frankfurter/Emil", - "UnitTests_Frankfurter/Emil", - 0 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Berliner/Anton", - 1 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Berliner/Berta", - 2 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Frankfurter/Fritz", - 0 - ], - [ - "UnitTests_Frankfurter/Fritz", - "UnitTests_Hamburger/Caesar", - 3 - ], - [ - "UnitTests_Hamburger/Caesar", - "UnitTests_Berliner/Anton", - 2 - ], - [ - "UnitTests_Hamburger/Caesar", - "UnitTests_Berliner/Berta", - 1 - ], - [ - "UnitTests_Hamburger/Caesar", - "UnitTests_Frankfurter/Fritz", - 1 - ], - [ - "UnitTests_Hamburger/Caesar", - "UnitTests_Hamburger/Caesar", - 0 - ], - [ - "UnitTests_Hamburger/Dieter", - "UnitTests_Hamburger/Dieter", - 0 - ], - [ - "UnitTests_Leipziger/Gerda", - "UnitTests_Leipziger/Gerda", - 0 - ] + actual = getQueryResults("FOR e IN GRAPH_SHORTEST_PATH('werKenntWen', {}, " + + "{}, {direction : 'inbound', algorithm : 'djikstra'}) SORT e.startVertex, e.vertex._id RETURN [e.startVertex, e.vertex._id, e.distance]"); + assertEqual(actual, [ + [ + "UnitTests_Berliner/Anton", + "UnitTests_Berliner/Anton", + 0 + ], + [ + "UnitTests_Berliner/Anton", + "UnitTests_Berliner/Berta", + 1 + ], + [ + "UnitTests_Berliner/Anton", + "UnitTests_Frankfurter/Fritz", + 3 + ], + [ + "UnitTests_Berliner/Anton", + "UnitTests_Hamburger/Caesar", + 2 + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Berliner/Anton", + 1 + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Berliner/Berta", + 0 + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Frankfurter/Fritz", + 2 + ], + [ + "UnitTests_Berliner/Berta", + "UnitTests_Hamburger/Caesar", + 1 + ], + [ + "UnitTests_Frankfurter/Emil", + "UnitTests_Frankfurter/Emil", + 0 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Berliner/Anton", + 1 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Berliner/Berta", + 2 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Frankfurter/Fritz", + 0 + ], + [ + "UnitTests_Frankfurter/Fritz", + "UnitTests_Hamburger/Caesar", + 3 + ], + [ + "UnitTests_Hamburger/Caesar", + "UnitTests_Berliner/Anton", + 2 + ], + [ + "UnitTests_Hamburger/Caesar", + "UnitTests_Berliner/Berta", + 1 + ], + [ + "UnitTests_Hamburger/Caesar", + "UnitTests_Frankfurter/Fritz", + 1 + ], + [ + "UnitTests_Hamburger/Caesar", + "UnitTests_Hamburger/Caesar", + 0 + ], + [ + "UnitTests_Hamburger/Dieter", + "UnitTests_Hamburger/Dieter", + 0 + ], + [ + "UnitTests_Leipziger/Gerda", + "UnitTests_Leipziger/Gerda", + 0 ] - ); - }, + ] + ); +}, - testGRAPH_CLOSENESS: function () { +testGRAPH_CLOSENESS: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_CLOSENESS('werKenntWen', {}, {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 4); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 4); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 4); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 4); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + var actual; + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_CLOSENESS('werKenntWen', {}, {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 4); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 4); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 4); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 4); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.53); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.94); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - }, + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.53); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.94); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); +}, - testGRAPH_CLOSENESS_OUTBOUND: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_CLOSENESS('werKenntWen',{}, {direction : 'outbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 4); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 4); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 6); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 6); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); +testGRAPH_CLOSENESS_OUTBOUND: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_CLOSENESS('werKenntWen',{}, {direction : 'outbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 4); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 4); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 6); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 6); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, direction : 'outbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.42); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(1), 0.7); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.3); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - }, + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, direction : 'outbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.42); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(1), 0.7); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(1), 0.3); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); +}, - testGRAPH_CLOSENESS_INBOUND: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_CLOSENESS('werKenntWen', {}, {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); +testGRAPH_CLOSENESS_INBOUND: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_CLOSENESS('werKenntWen', {}, {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 6); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 4); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 6); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 4); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 6); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 4); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 6); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 4); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, direction : 'inbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.83); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.37); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.39); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - }, + actual = getQueryResults("RETURN GRAPH_CLOSENESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, direction : 'inbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.83); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.37); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.39); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); +}, - testGRAPH_ECCENTRICITY: function () { - var actual; +testGRAPH_ECCENTRICITY: function () { + var actual; - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_ECCENTRICITY('werKenntWen',{}, {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 2); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 2); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 2); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 2); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_ECCENTRICITY('werKenntWen',{}, {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 2); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 2); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 2); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 2); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_ECCENTRICITY('werKenntWen',{}, {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 9); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 12); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 12); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 11); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_ECCENTRICITY('werKenntWen',{}, {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 9); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 12); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 12); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 11); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.67); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.67); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"].toFixed(2), 0.67); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.67); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_ECCENTRICITY('werKenntWen', {gender : 'female'}, {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 2); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_ECCENTRICITY('werKenntWen', {gender : 'female'}, {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 2); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.75); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.75); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.82); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_ECCENTRICITY('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"].toFixed(2), 0.75); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"].toFixed(2), 0.75); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"].toFixed(2), 0.82); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - }, +}, - testGRAPH_BETWEENNESS: function () { - var actual; +testGRAPH_BETWEENNESS: function () { + var actual; - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 1); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 2); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 3.5); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0.5); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 2); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_BETWEENNESS('werKenntWen', {algorithm : 'Floyd-Warshall', direction : 'inbound'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 2); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 3.5); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0.5); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 2); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_ABSOLUTE_BETWEENNESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 2); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 2); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"],0 ); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_ABSOLUTE_BETWEENNESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 2); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 2); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"],0 ); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - actual = getQueryResults("RETURN GRAPH_BETWEENNESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); - assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); - assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); - assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); - assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); - assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); + actual = getQueryResults("RETURN GRAPH_BETWEENNESS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0]["UnitTests_Berliner/Anton"], 1); + assertEqual(actual[0]["UnitTests_Berliner/Berta"], 1); + assertEqual(actual[0]["UnitTests_Frankfurter/Emil"], 0); + assertEqual(actual[0]["UnitTests_Frankfurter/Fritz"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Caesar"], 0); + assertEqual(actual[0]["UnitTests_Hamburger/Dieter"], 0); + assertEqual(actual[0]["UnitTests_Leipziger/Gerda"], 0); - }, +}, - testGRAPH_DIAMETER_AND_RADIUS: function () { - var actual; - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 2); +testGRAPH_DIAMETER_AND_RADIUS: function () { + var actual; + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 2); - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 9); + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 9); - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 2); + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 2); - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 12); + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 12); - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 2); + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 2); - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'inbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 13); + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'inbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 13); - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 3); + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'inbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 3); - actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'inbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 16); + actual = getQueryResults("RETURN GRAPH_DIAMETER('werKenntWen', {direction : 'inbound', weight : 'entfernung', defaultWeight : 80, algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 16); - actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'outbound', algorithm : 'Floyd-Warshall'})"); - assertEqual(actual[0], 2); + actual = getQueryResults("RETURN GRAPH_RADIUS('werKenntWen', {direction : 'outbound', algorithm : 'Floyd-Warshall'})"); + assertEqual(actual[0], 2); - } - }; +} +}; } diff --git a/js/server/tests/shell-tasks-timecritical.js b/js/server/tests/shell-tasks-timecritical.js index 4eaa239edd..6ea7495182 100644 --- a/js/server/tests/shell-tasks-timecritical.js +++ b/js/server/tests/shell-tasks-timecritical.js @@ -495,9 +495,6 @@ function TaskSuite () { internal.wait(1); - var t = getTasks(); - assertEqual(0, t.length); - internal.wait(5); assertEqual(1, db[cn].count()); @@ -529,17 +526,9 @@ function TaskSuite () { assertEqual(5, task.offset); assertEqual("_system", task.database); - var t = getTasks(); - assertEqual(1, t.length); - internal.wait(15); assertEqual(1, db[cn].count()); - // assertEqual(1, db[cn].byExample({ value: 23 }).toArray().length); - - // task should have gone by now - // t = getTasks(); - // assertEqual(0, t.length); }, ////////////////////////////////////////////////////////////////////////////////