NanoEmitter.spec.ts 842 B

123456789101112131415161718192021222324252627282930313233343536
  1. import { describe, expect, it } from "vitest";
  2. import { NanoEmitter } from "./NanoEmitter.js";
  3. describe("NanoEmitter", () => {
  4. it("Functional", async () => {
  5. const evts = new NanoEmitter<{
  6. val: (v1: number, v2: number) => void;
  7. }>({
  8. publicEmit: true,
  9. });
  10. setTimeout(() => evts.emit("val", 5, 5), 1);
  11. const [v1, v2] = await evts.once("val");
  12. expect(v1 + v2).toBe(10);
  13. });
  14. it("Object oriented", async () => {
  15. class MyEmitter extends NanoEmitter<{
  16. val: (v1: number, v2: number) => void;
  17. }> {
  18. constructor() {
  19. super({ publicEmit: false });
  20. }
  21. run() {
  22. this.events.emit("val", 5, 5);
  23. }
  24. }
  25. const evts = new MyEmitter();
  26. setTimeout(() => evts.run(), 1);
  27. const [v1, v2] = await evts.once("val");
  28. expect(v1 + v2).toBe(10);
  29. });
  30. });