generics.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { resolve } from 'path';
  2. import Piscina from '..';
  3. import { test } from 'tap';
  4. test('Piscina<T , R> works', async ({ equal }) => {
  5. const worker = new Piscina<string, number>({
  6. filename: resolve(__dirname, 'fixtures/eval.js')
  7. });
  8. const result: number = await worker.run('Promise.resolve(42)');
  9. equal(result, 42);
  10. });
  11. test('Piscina with no generic works', async ({ equal }) => {
  12. const worker = new Piscina({
  13. filename: resolve(__dirname, 'fixtures/eval.js')
  14. });
  15. const result = await worker.run('Promise.resolve("Hello, world!")');
  16. equal(result, 'Hello, world!');
  17. });
  18. test('Piscina<T, R> typescript complains when invalid Task is supplied as wrong type', async ({ equal }) => {
  19. const worker = new Piscina<string, number>({
  20. filename: resolve(__dirname, 'fixtures/eval.js')
  21. });
  22. // @ts-expect-error complains due to invalid Task being number when expecting string
  23. const result = await worker.run(42);
  24. equal(result, 42);
  25. });
  26. test('Piscina<T, R> typescript complains when assigning Result to wrong type', async ({ equal }) => {
  27. const worker = new Piscina<string, number>({
  28. filename: resolve(__dirname, 'fixtures/eval.js')
  29. });
  30. // @ts-expect-error complains due to expecting a number but being assigned to a string
  31. const result: string = await worker.run('Promise.resolve(42)');
  32. equal(result, 42);
  33. });