diff --git a/redlock/redlock-test.ts b/redlock/redlock-test.ts
new file mode 100644
index 000000000..e7d61096c
--- /dev/null
+++ b/redlock/redlock-test.ts
@@ -0,0 +1,103 @@
+///
+
+import Redlock = require('redlock');
+
+import NodeifyCallback = RedlockTypes.NodeifyCallback;
+import Lock = RedlockTypes.Lock;
+import RedlockOptions = RedlockTypes.RedlockOptions;
+
+module RedlockTest {
+ // constructor
+ {
+ let redlock: Redlock;
+ let client: any;
+ let options: RedlockOptions;
+ redlock = new Redlock([client]);
+ redlock = new Redlock([client], options);
+ }
+
+ // acquire, lock
+ {
+ let redlock: Redlock;
+ let resource: string;
+ let ttl: number;
+ let callback: NodeifyCallback;
+ let result: Promise;
+ result = redlock.acquire(resource, ttl);
+ result = redlock.acquire(resource, ttl, callback);
+ result = redlock.lock(resource, ttl);
+ result = redlock.lock(resource, ttl, callback);
+ }
+
+ // disposer
+ {
+ let redlock: Redlock;
+ let resource: string;
+ let ttl: number;
+ let result: any;
+ result = redlock.acquire(resource, ttl);
+ }
+
+ // release, unlock
+ {
+ let redlock: Redlock;
+ let lock: Lock;
+ let callback: NodeifyCallback;
+ let result: Promise;
+ result = redlock.release(lock);
+ result = redlock.release(lock, callback);
+ result = redlock.unlock(lock);
+ result = redlock.unlock(lock, callback);
+ }
+
+ // extend
+ {
+ let redlock: Redlock;
+ let lock: Lock;
+ let ttl: number;
+ let callback: NodeifyCallback;
+ let result: Promise;
+ result = redlock.extend(lock, ttl);
+ result = redlock.extend(lock, ttl, callback);
+ }
+
+ // _lock
+ {
+ let redlock: Redlock;
+ let resource: string;
+ let value: string;
+ let ttl: number;
+ let callback: NodeifyCallback;
+ let result: Promise;
+ result = redlock._lock(resource, value, ttl);
+ result = redlock._lock(resource, value, ttl, callback);
+ }
+
+ // _random
+ {
+ let redlock: Redlock;
+ let result: string;
+ result = redlock._random();
+ }
+}
+
+module LockTest {
+ // unlock
+ {
+ let lock: Lock;
+ let callback: NodeifyCallback;
+ let result: void;
+ result = lock.unlock();
+ result = lock.unlock(callback);
+ }
+
+ // extend
+ {
+ let lock: Lock;
+ let ttl: number;
+ let callback: NodeifyCallback;
+ let result: Promise;
+ result = lock.extend(ttl);
+ result = lock.extend(ttl, callback);
+ }
+}