diff --git a/merge-descriptors/merge-descriptors-tests.ts b/merge-descriptors/merge-descriptors-tests.ts
new file mode 100644
index 0000000000..81376320ff
--- /dev/null
+++ b/merge-descriptors/merge-descriptors-tests.ts
@@ -0,0 +1,35 @@
+///
+import mixin = require('merge-descriptors');
+
+function testAssertion(condition: boolean, errorMessage: string) {
+ if (!condition) {
+ throw new Error(errorMessage);
+ }
+}
+
+interface IMergedObject {
+ InSrc?: string;
+ name: string;
+ InTarget: string;
+}
+
+var src = {
+ InSrc: 'src',
+ get name(): string {
+ return 'from src name';
+ }
+}
+
+var target: IMergedObject = { name: 'my target name', InTarget: 'target' };
+
+var target2 = mixin(target, src, true);
+
+console.log(JSON.stringify(target));
+
+testAssertion(target2 === target, "Returned object should refer to input [destination] object");
+testAssertion(target.name === 'from src name', "[redfine]=true, source member will overwrite destination member");
+testAssertion(target.InTarget === 'target', "overwrite do not affect members only in [destination]");
+testAssertion(target['InSrc'] === 'src', "members from [source] must be copied to [destination]");
+
+var nameProperty:PropertyDescriptor = Object.getOwnPropertyDescriptor(target, "name");
+testAssertion(nameProperty.set === undefined, "member descriptor must be overwritten");
\ No newline at end of file
diff --git a/merge-descriptors/merge-descriptors-tests.ts.tscparams b/merge-descriptors/merge-descriptors-tests.ts.tscparams
new file mode 100644
index 0000000000..4169d3605f
--- /dev/null
+++ b/merge-descriptors/merge-descriptors-tests.ts.tscparams
@@ -0,0 +1 @@
+--noImplicitAny --module commonjs --target es5
\ No newline at end of file
diff --git a/merge-descriptors/merge-descriptors.d.ts b/merge-descriptors/merge-descriptors.d.ts
new file mode 100644
index 0000000000..8e3212edda
--- /dev/null
+++ b/merge-descriptors/merge-descriptors.d.ts
@@ -0,0 +1,13 @@
+// Type definitions for merge-descriptors
+// Project: https://github.com/component/merge-descriptors
+// Definitions by: Zhiyuan Wang
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module 'merge-descriptors' {
+
+ function merge(destination: Object, source: Object): Object;
+
+ function merge(destination: Object, source: Object, redefine: boolean): Object;
+
+ export = merge;
+}
\ No newline at end of file