diff --git a/bluebird/bluebird-tests.ts b/bluebird/bluebird-tests.ts
index 14528b9b57..e5d83db7a6 100644
--- a/bluebird/bluebird-tests.ts
+++ b/bluebird/bluebird-tests.ts
@@ -1,319 +1,883 @@
///
-// Note: try to maintain the ordering and separators
+// Tests by: Bart van der Schoor
-var obj:Object;
-var bool:boolean;
-var num:number;
-var str:string;
-var x:any = null;
-var f:Function;
-var arr:any[];
-var exp:RegExp;
-var strArr:string[];
-var numArr:string[];
+// Note: replicate changes to all overloads in both definition and test file
+// Note: keep both static and instance members inline (so similar)
+// Note: try to maintain the ordering and separators, and keep to the pattern
-var value:any = null;
-var reason:any = null;
+var obj: Object;
+var bool: boolean;
+var num: number;
+var str: string;
+var err: Error;
+var x: any;
+var f: Function;
+var func: Function;
+var arr: any[];
+var exp: RegExp;
+var anyArr: any[];
+var strArr: string[];
+var numArr: number[];
-var promise:Promise;
-var p:Promise;
+// - - - - - - - - - - - - - - - - -
-var resolver:Promise.Resolver;
-var inspection:Promise.Inspection;
+var value: any;
+var reason: any;
+var insanity: any;
-// - - - - - - - - - - - - - - - - - - - - - - - -
+// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-var promise = new Promise((resolve:(value:any) => void, reject:(reason:any) => void) => {
- if(true) {
- resolve(123);
- }
- else {
- reject(new Error('nope'));
- }
+interface Foo {
+ foo(): string;
+}
+interface Bar {
+ bar(): string;
+}
+
+// - - - - - - - - - - - - - - - - -
+
+interface StrFooMap {
+ [key:string]:Foo;
+}
+
+interface StrBarMap {
+ [key:string]:Bar;
+}
+
+// - - - - - - - - - - - - - - - - -
+
+interface StrFooArrMap {
+ [key:string]:Foo[];
+}
+
+interface StrBarArrMap {
+ [key:string]:Bar[];
+}
+
+// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+var foo: Foo;
+var bar: Bar;
+
+var fooArr: Foo[];
+var barArr: Bar[];
+
+// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+var numProm: Promise;
+var strProm: Promise;
+var anyProm: Promise;
+var boolProm: Promise;
+var objProm: Promise