From 2e724ff7b6e760212a85cea883c7c58480dd3596 Mon Sep 17 00:00:00 2001 From: Wim Looman Date: Mon, 16 Mar 2015 10:15:20 +1300 Subject: [PATCH] Add type definitions for lolex --- lolex/lolex-tests.ts | 116 +++++++++++++++++++++++++++++++++++++++++++ lolex/lolex.d.ts | 24 +++++++++ 2 files changed, 140 insertions(+) create mode 100644 lolex/lolex-tests.ts create mode 100644 lolex/lolex.d.ts diff --git a/lolex/lolex-tests.ts b/lolex/lolex-tests.ts new file mode 100644 index 000000000..10500211c --- /dev/null +++ b/lolex/lolex-tests.ts @@ -0,0 +1,116 @@ +/// + +import lolex = require("lolex"); + +function a() { + var clock = lolex.createClock(); + + clock.setTimeout(function () { + console.log("The poblano is a mild chili pepper originating in the state of Puebla, Mexico."); + }, 15); + + // ... + + clock.tick(15); +} + +function b() { + var clock = lolex.install(window); + + window.setTimeout(() => {}, 15); // Schedules with clock.setTimeout + + clock.uninstall(); + + // window.setTimeout is restored to the native implementation +} + +function c() { + var clock = lolex.install(); + + // Equivalent to + // var clock = lolex.install(typeof global !== "undefined" ? global : window); +} + +var clock: lolex.Clock; + +/** + * var clock = lolex.createClock([now]) + */ + +clock = lolex.createClock(); +clock = lolex.createClock(Date.now()); + + +/** + * var clock = lolex.install([context[, now[, toFake]]]) + */ + +clock = lolex.install(); +clock = lolex.install(window); +clock = lolex.install(window, Date.now()); +clock = lolex.install(window, Date.now(), ['setTimeout', 'clearTimeout']); + + +/** + * var clock = lolex.install([now[, toFake]]) + */ + +clock = lolex.install(Date.now()); +clock = lolex.install(Date.now(), ['setTimeout', 'clearTimeout']); + + +var id: number; +/** + * var id = clock.setTimeout(callback, timeout) + */ + +id = clock.setTimeout(() => {}, 1000); + + +/** + * clock.clearTimeout(id) + */ + +clock.clearTimeout(id); + + +/** + * var id = clock.setInterval(callback, timeout) + */ + +id = clock.setInterval(() => {}, 1000); + + +/** + * clock.clearInterval(id) + */ + +clock.clearInterval(id); + + +/** + * var id = clock.setImmediate(callback) + */ + +id = clock.setImmediate(() => {}); + + +/** + * clock.clearImmediate(id) + */ + +clock.clearImmediate(id); + + +/** + * clock.tick(time) + */ + +clock.tick(1000); + + +/** + * clock.uninstall() + */ + +clock.uninstall(); diff --git a/lolex/lolex.d.ts b/lolex/lolex.d.ts new file mode 100644 index 000000000..bc0f0c81c --- /dev/null +++ b/lolex/lolex.d.ts @@ -0,0 +1,24 @@ +// Type definitions for lolex 1.2.1 +// Project: https://github.com/sinonjs/lolex +// Definitions by: Wim Looman +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module 'lolex' { + export interface Clock { + setTimeout(callback: () => any, timeout: number): number; + setInterval(callback: () => any, timeout: number): number; + setImmediate(callback: () => any): number; + + clearTimeout(id: number): void; + clearInterval(id: number): void; + clearImmediate(id: number): void; + + tick(ms: number): void; + uninstall(): void; + } + + export function createClock(now?: number): Clock; + + export function install(now?: number, toFake?: string[]): Clock; + export function install(context?: any, now?: number, toFake?: string[]): Clock; +}