feat: 초기 프로젝트 설정 및 룰.md 파일 추가
This commit is contained in:
96
api.hyungi.net/node_modules/dijkstrajs/test/dijkstra.test.js
generated
vendored
Normal file
96
api.hyungi.net/node_modules/dijkstrajs/test/dijkstra.test.js
generated
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
'use strict';
|
||||
|
||||
var expect = require('expect.js');
|
||||
var dijkstra = require('../dijkstra.js');
|
||||
var find_path = dijkstra.find_path;
|
||||
|
||||
describe('dijkstra.js', function () {
|
||||
|
||||
describe('.find_path()', function () {
|
||||
|
||||
it('should find the path between two points, all edges have weight 1', function () {
|
||||
// A B C
|
||||
// D E F
|
||||
// G H I
|
||||
var graph = {
|
||||
a: {b: 10, d: 1},
|
||||
b: {a: 1, c: 1, e: 1},
|
||||
c: {b: 1, f: 1},
|
||||
d: {a: 1, e: 1, g: 1},
|
||||
e: {b: 1, d: 1, f: 1, h: 1},
|
||||
f: {c: 1, e: 1, i: 1},
|
||||
g: {d: 1, h: 1},
|
||||
h: {e: 1, g: 1, i: 1},
|
||||
i: {f: 1, h: 1}
|
||||
};
|
||||
var path = find_path(graph, 'a', 'i');
|
||||
expect(path).to.eql(['a', 'd', 'e', 'f', 'i']);
|
||||
});
|
||||
|
||||
it('should find the path between two points, weighted edges', function () {
|
||||
var graph = {
|
||||
a: {b: 10, c: 100, d: 1},
|
||||
b: {c: 10},
|
||||
d: {b: 1, e: 1},
|
||||
e: {f: 1},
|
||||
f: {c: 1},
|
||||
g: {b: 1}
|
||||
};
|
||||
|
||||
var path = find_path(graph, 'a', 'c');
|
||||
expect(path).to.eql(['a', 'd', 'e', 'f', 'c']);
|
||||
path = find_path(graph, 'd', 'b');
|
||||
expect(path).to.eql(['d', 'b']);
|
||||
});
|
||||
|
||||
it('should throw on unreachable destination', function () {
|
||||
var graph = {
|
||||
a: {b: 10, c: 100, d: 1},
|
||||
b: {c: 10},
|
||||
d: {b: 1, e: 1},
|
||||
e: {f: 1},
|
||||
f: {c: 1},
|
||||
g: {b: 1}
|
||||
};
|
||||
|
||||
expect(function () { find_path(graph, 'c', 'a'); }).to.throwException();
|
||||
expect(function () { find_path(graph, 'a', 'g'); }).to.throwException();
|
||||
});
|
||||
|
||||
it('should throw on non-existent destination', function () {
|
||||
var graph = {
|
||||
a: {b: 10, c: 100, d: 1},
|
||||
b: {c: 10},
|
||||
d: {b: 1, e: 1},
|
||||
e: {f: 1},
|
||||
f: {c: 1},
|
||||
g: {b: 1}
|
||||
};
|
||||
|
||||
expect(function () { find_path(graph, 'a', 'z'); }).to.throwException();
|
||||
});
|
||||
});
|
||||
|
||||
describe('.single_source_shortest_paths()', function () {
|
||||
it('should find all paths from a node', function () {
|
||||
var graph = {
|
||||
a: {b: 10, c: 100, d: 1},
|
||||
b: {c: 10},
|
||||
d: {b: 1, e: 1},
|
||||
e: {f: 1},
|
||||
f: {c: 1},
|
||||
g: {b: 1}
|
||||
};
|
||||
|
||||
// All paths from 'a'
|
||||
var paths = dijkstra.single_source_shortest_paths(graph, 'a');
|
||||
expect(paths).to.eql({
|
||||
d: 'a',
|
||||
b: 'd',
|
||||
e: 'd',
|
||||
f: 'e',
|
||||
c: 'f'
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user