提交 558a22d1 编写于 作者: J Johannes Rieken

debt - remove unsued code

上级 a272ebcf
......@@ -39,25 +39,6 @@ export class Graph<T> {
return ret;
}
traverse(start: T, inwards: boolean, callback: (data: T) => void): void {
const startNode = this.lookup(start);
if (!startNode) {
return;
}
this._traverse(startNode, inwards, Object.create(null), callback);
}
private _traverse(node: Node<T>, inwards: boolean, seen: { [key: string]: boolean }, callback: (data: T) => void): void {
const key = this._hashFn(node.data);
if (seen[key]) {
return;
}
seen[key] = true;
callback(node.data);
const nodes = inwards ? node.outgoing : node.incoming;
forEach(nodes, (entry) => this._traverse(entry.value, inwards, seen, callback));
}
insertEdge(from: T, to: T): void {
const fromNode = this.lookupOrInsertNode(from),
toNode = this.lookupOrInsertNode(to);
......@@ -91,8 +72,11 @@ export class Graph<T> {
return this._nodes[this._hashFn(data)];
}
get length(): number {
return Object.keys(this._nodes).length;
isEmpty(): boolean {
for (const _key in this._nodes) {
return false;
}
return true;
}
toString(): string {
......
......@@ -14,12 +14,6 @@ suite('Graph', () => {
graph = new Graph<string>(s => s);
});
test('cannot be traversed when empty', function () {
graph.traverse('foo', true, () => assert(false));
graph.traverse('foo', false, () => assert(false));
assert(true);
});
test('is possible to lookup nodes that don\'t exist', function () {
assert.deepEqual(graph.lookup('ddd'), null);
});
......@@ -31,46 +25,13 @@ suite('Graph', () => {
});
test('can remove nodes and get length', function () {
assert.equal(graph.length, 0);
assert.ok(graph.isEmpty());
assert.deepEqual(graph.lookup('ddd'), null);
assert.deepEqual(graph.lookupOrInsertNode('ddd').data, 'ddd');
assert.equal(graph.length, 1);
assert.ok(!graph.isEmpty());
graph.removeNode('ddd');
assert.deepEqual(graph.lookup('ddd'), null);
assert.equal(graph.length, 0);
});
test('traverse from leaf', function () {
graph.insertEdge('foo', 'bar');
graph.traverse('bar', true, (node) => assert.equal(node, 'bar'));
var items = ['bar', 'foo'];
graph.traverse('bar', false, (node) => assert.equal(node, items.shift()));
});
test('traverse from center', function () {
graph.insertEdge('1', '3');
graph.insertEdge('2', '3');
graph.insertEdge('3', '4');
graph.insertEdge('3', '5');
var items = ['3', '4', '5'];
graph.traverse('3', true, (node) => assert.equal(node, items.shift()));
items = ['3', '1', '2'];
graph.traverse('3', false, (node) => assert.equal(node, items.shift()));
});
test('traverse a chain', function () {
graph.insertEdge('1', '2');
graph.insertEdge('2', '3');
graph.insertEdge('3', '4');
graph.insertEdge('4', '5');
var items = ['1', '2', '3', '4', '5'];
graph.traverse('1', true, (node) => assert.equal(node, items.shift()));
items = ['1', '2', '3', '4', '5'].reverse();
graph.traverse('5', false, (node) => assert.equal(node, items.shift()));
assert.ok(graph.isEmpty());
});
test('root', function () {
......@@ -93,4 +54,4 @@ suite('Graph', () => {
assert.equal(roots.length, 2);
assert(['2', '4'].every(n => roots.some(node => node.data === n)));
});
});
\ No newline at end of file
});
......@@ -182,7 +182,7 @@ export class InstantiationService implements IInstantiationService {
// if there is no more roots but still
// nodes in the graph we have a cycle
if (roots.length === 0) {
if (graph.length !== 0) {
if (!graph.isEmpty()) {
throwCycleError();
}
break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册