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]);
+ });
+});