mirror of
https://github.com/mapillary/mapillary-js.git
synced 2026-01-18 13:56:53 +00:00
147 lines
3.5 KiB
TypeScript
147 lines
3.5 KiB
TypeScript
import { EventEmitter } from "../../src/util/EventEmitter";
|
|
|
|
describe("EventEmitter.ctor", () => {
|
|
test("should be defined", () => {
|
|
const eventEmitter = new EventEmitter();
|
|
expect(eventEmitter).toBeDefined();
|
|
});
|
|
});
|
|
|
|
describe("EventEmitter.on", () => {
|
|
let eventEmitter: EventEmitter;
|
|
|
|
beforeEach(() => {
|
|
eventEmitter = new EventEmitter();
|
|
});
|
|
|
|
test("should emit on event", (done: Function) => {
|
|
let data: string = "testdata";
|
|
|
|
eventEmitter.on("test", (ev: any) => {
|
|
expect(ev).toBe(data);
|
|
done();
|
|
});
|
|
|
|
eventEmitter.fire("test", data);
|
|
});
|
|
|
|
test("should get two different events only once", (done: Function) => {
|
|
let data: string = "testdata";
|
|
let data2: string = "testdata2";
|
|
|
|
let i: number = 0;
|
|
|
|
eventEmitter.on("test", (ev: any) => {
|
|
expect(ev).toBe(data);
|
|
i++;
|
|
expect(i).toBe(1);
|
|
});
|
|
|
|
eventEmitter.on("test2", (ev: any) => {
|
|
expect(ev).toBe(data2);
|
|
i++;
|
|
expect(i).toBe(2);
|
|
done();
|
|
});
|
|
|
|
eventEmitter.fire("test", data);
|
|
eventEmitter.fire("test2", data2);
|
|
});
|
|
|
|
test("should get the same event twice", (done: Function) => {
|
|
let data: string = "testdata";
|
|
|
|
let i: number = 0;
|
|
|
|
eventEmitter.on("test", (ev: any) => {
|
|
expect(ev).toBe(data);
|
|
i++;
|
|
expect(i).toBe(1);
|
|
});
|
|
|
|
eventEmitter.on("test", (ev: any) => {
|
|
expect(ev).toBe(data);
|
|
i++;
|
|
expect(i).toBe(2);
|
|
done();
|
|
});
|
|
|
|
eventEmitter.fire("test", data);
|
|
});
|
|
});
|
|
|
|
interface TestEvent {
|
|
data: string;
|
|
type: string;
|
|
}
|
|
|
|
describe("EventEmitter.off", () => {
|
|
let eventEmitter: EventEmitter;
|
|
|
|
beforeEach(() => {
|
|
eventEmitter = new EventEmitter();
|
|
});
|
|
|
|
test("should remove listener", () => {
|
|
const event: TestEvent = { data: "testdata", type: "test" };
|
|
|
|
let onTestCount = 0;
|
|
const onTest = () => {
|
|
onTestCount++;
|
|
fail();
|
|
};
|
|
eventEmitter.on(event.type, onTest);
|
|
eventEmitter.off(event.type, onTest);
|
|
|
|
eventEmitter.fire(event.type, event);
|
|
|
|
expect(onTestCount).toBe(0);
|
|
});
|
|
|
|
test("should remove specific listener", () => {
|
|
const event: TestEvent = { data: "testdata", type: "test" };
|
|
|
|
let count = 0;
|
|
const onTest1 = () => {
|
|
count++;
|
|
fail();
|
|
};
|
|
const onTest2 = (e: TestEvent) => {
|
|
count++;
|
|
expect(e.type).toBe("test");
|
|
expect(count).toBe(1);
|
|
};
|
|
eventEmitter.on(event.type, onTest1);
|
|
eventEmitter.on(event.type, onTest2);
|
|
|
|
eventEmitter.off(event.type, onTest1);
|
|
|
|
eventEmitter.fire(event.type, event);
|
|
|
|
expect(count).toBe(1);
|
|
});
|
|
|
|
test("should remove all listeners", () => {
|
|
const event: TestEvent = { data: "testdata", type: "test" };
|
|
|
|
let count = 0;
|
|
const onTest1 = () => {
|
|
count++;
|
|
fail();
|
|
};
|
|
const onTest2 = () => {
|
|
count++;
|
|
fail();
|
|
};
|
|
eventEmitter.on(event.type, onTest1);
|
|
eventEmitter.on(event.type, onTest2);
|
|
|
|
eventEmitter.off(event.type, onTest1);
|
|
eventEmitter.off(event.type, onTest2);
|
|
|
|
eventEmitter.fire(event.type, event);
|
|
|
|
expect(count).toBe(0);
|
|
});
|
|
});
|