DefinitelyTyped/types/event-kit/event-kit-tests.ts
2017-11-06 00:31:14 -05:00

89 lines
2.3 KiB
TypeScript

import { Disposable, CompositeDisposable, Emitter } from "event-kit";
declare let bool: boolean;
declare let subscription: Disposable;
declare let subscriptions: CompositeDisposable;
declare let emitter: Emitter;
// NPM Usage Tests ============================================================
class User {
private readonly emitter: Emitter;
name: string;
constructor() {
this.emitter = new Emitter();
}
onDidChangeName(callback: (value: string) => void) {
return this.emitter.on("did-change-name", callback);
}
setName(name: string) {
if (name !== this.name) {
this.name = name;
this.emitter.emit("did-change-name", name);
}
return name;
}
destroy() {
this.emitter.dispose();
}
}
const user = new User();
subscription = user.onDidChangeName(name => console.log("My name is #{name}"));
subscription.dispose();
// Disposable =================================================================
bool = subscription.disposed;
if (subscription.disposalAction) subscription.disposalAction();
subscription.dispose();
// CompositeDisposable ========================================================
// Properties
bool = subscriptions.disposed;
// Construction and Lifecycle
subscriptions = new CompositeDisposable();
new CompositeDisposable(subscription);
new CompositeDisposable(subscription, subscription);
new CompositeDisposable({ dispose() {} });
subscriptions.dispose();
// Managing Disposables
subscriptions.add(subscription);
subscriptions.add(
subscription,
{ dispose() {} }
);
subscriptions.remove(subscription);
subscriptions.remove({ dispose() {} });
subscriptions.delete(subscription);
subscriptions.delete({ dispose() {} });
subscriptions.clear();
// Emitter ====================================================================
bool = emitter.disposed;
emitter.clear();
emitter.dispose();
// Event Subscription
subscription = emitter.on("test-event", value => {});
emitter.once("test-event", value => {});
subscription = emitter.preempt("test-event", value => {});
// Event Emission
emitter.emit("test-event");
emitter.emit("test-event", 42);
async function testEmitAsync() {
await emitter.emitAsync("test-event");
await emitter.emitAsync("test-event", 42);
}