This reverts commit 3ecf673f91ca7ab381a0a4a2c5fe1e2c52653cd8. Revert "no mld" This reverts commit 29464f40ccb86a5ed5de7a31e4f136329c33718e. Revert "comment out MLD tests" This reverts commit b81cc7010cc5454d9c03d07609d1b1a3477e5de3. Revert "uncommenting parts of test makefile" This reverts commit de152a821e524eaf7a337c34994fdcef174eafda. uncomment mld data creation in test make file uncomment a few nodejs mld tests as they pass now
152 lines
5.5 KiB
JavaScript
152 lines
5.5 KiB
JavaScript
var OSRM = require('../../');
|
|
var test = require('tape');
|
|
var monaco_path = require('./constants').data_path;
|
|
var test_memory_file = require('./constants').test_memory_file;
|
|
var monaco_mld_path = require('./constants').mld_data_path;
|
|
var monaco_corech_path = require('./constants').corech_data_path;
|
|
|
|
test('constructor: throws if new keyword is not used', function(assert) {
|
|
assert.plan(1);
|
|
assert.throws(function() { OSRM(); },
|
|
/Cannot call constructor as function, you need to use 'new' keyword/);
|
|
});
|
|
|
|
test('constructor: uses defaults with no parameter', function(assert) {
|
|
assert.plan(1);
|
|
var osrm = new OSRM();
|
|
assert.ok(osrm);
|
|
});
|
|
|
|
test('constructor: does not accept more than one parameter', function(assert) {
|
|
assert.plan(1);
|
|
assert.throws(function() { new OSRM({}, {}); },
|
|
/Only accepts one parameter/);
|
|
});
|
|
|
|
test('constructor: throws if necessary files do not exist', function(assert) {
|
|
assert.plan(2);
|
|
assert.throws(function() { new OSRM('missing.osrm'); },
|
|
/Required files are missing, cannot continue/);
|
|
|
|
assert.throws(function() { new OSRM({path: 'missing.osrm', algorithm: 'MLD'}); },
|
|
/Required files are missing, cannot continue/);
|
|
});
|
|
|
|
test('constructor: takes a shared memory argument', function(assert) {
|
|
assert.plan(1);
|
|
var osrm = new OSRM({path: monaco_path, shared_memory: false});
|
|
assert.ok(osrm);
|
|
});
|
|
|
|
test('constructor: takes a memory file', function(assert) {
|
|
assert.plan(1);
|
|
var osrm = new OSRM({path: monaco_path, memory_file: test_memory_file});
|
|
assert.ok(osrm);
|
|
});
|
|
|
|
test('constructor: throws if shared_memory==false with no path defined', function(assert) {
|
|
assert.plan(1);
|
|
assert.throws(function() { new OSRM({shared_memory: false}); },
|
|
/Shared_memory must be enabled if no path is specified/);
|
|
});
|
|
|
|
test('constructor: throws if given a non-bool shared_memory option', function(assert) {
|
|
assert.plan(1);
|
|
assert.throws(function() { new OSRM({path: monaco_path, shared_memory: 'a'}); },
|
|
/Shared_memory option must be a boolean/);
|
|
});
|
|
|
|
test('constructor: throws if given a non-string/obj argument', function(assert) {
|
|
assert.plan(1);
|
|
assert.throws(function() { new OSRM(true); },
|
|
/Parameter must be a path or options object/);
|
|
});
|
|
|
|
test('constructor: throws if given an unkown algorithm', function(assert) {
|
|
assert.plan(1);
|
|
assert.throws(function() { new OSRM({algorithm: 'Foo', shared_memory: true}); },
|
|
/algorithm option must be one of 'CH', 'CoreCH', or 'MLD'/);
|
|
});
|
|
|
|
test('constructor: throws if given an invalid algorithm', function(assert) {
|
|
assert.plan(1);
|
|
assert.throws(function() { new OSRM({algorithm: 3, shared_memory: true}); },
|
|
/algorithm option must be a string and one of 'CH', 'CoreCH', or 'MLD'/);
|
|
});
|
|
|
|
test('constructor: loads MLD if given as algorithm', function(assert) {
|
|
assert.plan(1);
|
|
var osrm = new OSRM({algorithm: 'MLD', path: monaco_mld_path});
|
|
assert.ok(osrm);
|
|
});
|
|
|
|
test('constructor: loads CH if given as algorithm', function(assert) {
|
|
assert.plan(1);
|
|
var osrm = new OSRM({algorithm: 'CH', path: monaco_path});
|
|
assert.ok(osrm);
|
|
});
|
|
|
|
test('constructor: loads CoreCH if given as algorithm', function(assert) {
|
|
assert.plan(1);
|
|
var osrm = new OSRM({algorithm: 'CoreCH', path: monaco_corech_path});
|
|
assert.ok(osrm);
|
|
});
|
|
|
|
test('constructor: autoswitches to CoreCH for a CH dataset if capable', function(assert) {
|
|
assert.plan(1);
|
|
var osrm = new OSRM({algorithm: 'CH', path: monaco_corech_path});
|
|
assert.ok(osrm);
|
|
});
|
|
|
|
test('constructor: throws if data doesn\'t match algorithm', function(assert) {
|
|
assert.plan(3);
|
|
assert.throws(function() { new OSRM({algorithm: 'CoreCH', path: monaco_mld_path}); }, /Could not find any metrics for CH/, 'CoreCH with MLD data');
|
|
assert.ok(new OSRM({algorithm: 'CoreCH', path: monaco_path}), 'CoreCH with CH data');
|
|
assert.throws(function() { new OSRM({algorithm: 'MLD', path: monaco_path}); }, /Could not find any metrics for MLD/, 'MLD with CH data');
|
|
});
|
|
|
|
test('constructor: throws if dataset_name is not a string', function(assert) {
|
|
assert.plan(3);
|
|
assert.throws(function() { new OSRM({dataset_name: 1337, path: monaco_mld_path}); }, /dataset_name needs to be a string/, 'Does not accept int');
|
|
assert.ok(new OSRM({dataset_name: "", shared_memory: true}), 'Does accept string');
|
|
assert.throws(function() { new OSRM({dataset_name: "unsued_name___", shared_memory: true}); }, /Could not find shared memory region/, 'Does not accept wrong name');
|
|
});
|
|
|
|
test('constructor: parses custom limits', function(assert) {
|
|
assert.plan(1);
|
|
var osrm = new OSRM({
|
|
path: monaco_mld_path,
|
|
algorithm: 'MLD',
|
|
max_locations_trip: 1,
|
|
max_locations_viaroute: 1,
|
|
max_locations_distance_table: 1,
|
|
max_locations_map_matching: 1,
|
|
max_results_nearest: 1,
|
|
max_alternatives: 1,
|
|
});
|
|
assert.ok(osrm);
|
|
});
|
|
|
|
test('constructor: throws on invalid custom limits', function(assert) {
|
|
assert.plan(1);
|
|
assert.throws(function() {
|
|
var osrm = new OSRM({
|
|
path: monaco_mld_path,
|
|
algorithm: 'MLD',
|
|
max_locations_trip: 'unlimited',
|
|
max_locations_viaroute: true,
|
|
max_locations_distance_table: false,
|
|
max_locations_map_matching: 'a lot',
|
|
max_results_nearest: null,
|
|
max_alternatives: '10'
|
|
})
|
|
});
|
|
});
|
|
|
|
require('./route.js');
|
|
require('./trip.js');
|
|
require('./match.js');
|
|
require('./tile.js');
|
|
require('./table.js');
|
|
require('./nearest.js');
|