From c1a7c7335a4840ab3554dd06e3e9fcaaebbbc62b Mon Sep 17 00:00:00 2001 From: Cayle Sharrock Date: Wed, 19 Jul 2017 09:48:11 +0200 Subject: [PATCH 1/2] Make bintrees TS 2.4 compliant --- types/bintrees/bintrees-tests.ts | 4 +++- types/bintrees/index.d.ts | 12 ++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/types/bintrees/bintrees-tests.ts b/types/bintrees/bintrees-tests.ts index 707d8e0adf..fa03ae5941 100644 --- a/types/bintrees/bintrees-tests.ts +++ b/types/bintrees/bintrees-tests.ts @@ -4,7 +4,6 @@ let treeA = new RBTree((a:number, b:number) => a - b); treeA.insert(5); treeA.insert(3); -treeA.remove(3); let treeB = new BinTree((a:string, b:string) => a.length - b.length); @@ -12,3 +11,6 @@ treeB.insert('hi'); treeB.insert('there'); treeB.insert('how'); treeB.insert('are'); + +treeB.remove('how'); + diff --git a/types/bintrees/index.d.ts b/types/bintrees/index.d.ts index 7a7b2c233e..743997dc03 100644 --- a/types/bintrees/index.d.ts +++ b/types/bintrees/index.d.ts @@ -5,8 +5,8 @@ declare module 'bintrees' { - type Callback = (item: T) => void; - type Comparator = (a: T, b: T) => number; + type Callback = (item: T) => void; + type Comparator = (a: T, b: T) => number; class Iterator { constructor(tree: TreeBase); @@ -37,14 +37,14 @@ declare module 'bintrees' { iterator(): Iterator; - each(cb: Callback): void; + each(cb: Callback): void; - reach(cb: Callback): void; + reach(cb: Callback): void; } export class RBTree extends TreeBase { - constructor(comparator: Comparator); + constructor(comparator: Comparator); insert(item: T): boolean; @@ -52,7 +52,7 @@ declare module 'bintrees' { } export class BinTree extends TreeBase { - constructor(comparator: Comparator); + constructor(comparator: Comparator); insert(item: T): boolean; From 3db20be3ee800c7eb4a160d9982d547663f3fd63 Mon Sep 17 00:00:00 2001 From: Cayle Sharrock Date: Wed, 19 Jul 2017 10:11:10 +0200 Subject: [PATCH 2/2] Mocha-fy and add test --- types/bintrees/bintrees-tests.ts | 52 ++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/types/bintrees/bintrees-tests.ts b/types/bintrees/bintrees-tests.ts index fa03ae5941..fb4a22a3d8 100644 --- a/types/bintrees/bintrees-tests.ts +++ b/types/bintrees/bintrees-tests.ts @@ -1,16 +1,50 @@ +/// +/// +import assert = require('assert'); import { BinTree, RBTree } from 'bintrees'; -let treeA = new RBTree((a:number, b:number) => a - b); +describe('bintrees', () => { + it('builds a simple tree', () => { + let treeA = new RBTree((a: number, b: number) => a - b); -treeA.insert(5); -treeA.insert(3); + treeA.insert(5); + treeA.insert(3); + treeA.remove(3); -let treeB = new BinTree((a:string, b:string) => a.length - b.length); + assert.equal(treeA.size, 1); + }); -treeB.insert('hi'); -treeB.insert('there'); -treeB.insert('how'); -treeB.insert('are'); + it('builds a tree of strings', () => { + let treeB = new BinTree((a:string, b:string) => a.length - b.length); -treeB.remove('how'); + treeB.insert('hi'); + treeB.insert('there'); + treeB.insert('how'); + treeB.insert('are'); // ignored + treeB.remove('how'); + + assert.equal(treeB.size, 2); + assert.equal(treeB.min(), 'hi'); + }); + + it('maintains a tree of objects', () => { + + interface C { + id: number + } + + let treeC = new BinTree((a: C, b: C) => a.id - b.id); + + treeC.insert({ id: 100 }); + treeC.insert({ id: 110 }); + treeC.insert({ id: 105 }); + + let ids: number[] = []; + treeC.each((val: C) => { + ids.push(val.id); + }); + + assert.deepEqual(ids, [100, 105, 110]); + }); +});