shared-utils.spec.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { describe, expect, it } from 'vitest';
  2. import { generateAllCombinations, isClassInstance } from './shared-utils';
  3. describe('generateAllCombinations()', () => {
  4. it('works with an empty input array', () => {
  5. const result = generateAllCombinations([]);
  6. expect(result).toEqual([]);
  7. });
  8. it('works with an input of length 1', () => {
  9. const result = generateAllCombinations([['red', 'green', 'blue']]);
  10. expect(result).toEqual([['red'], ['green'], ['blue']]);
  11. });
  12. it('works with an input of length 2', () => {
  13. const result = generateAllCombinations([
  14. ['red', 'green', 'blue'],
  15. ['small', 'large'],
  16. ]);
  17. expect(result).toEqual([
  18. ['red', 'small'],
  19. ['red', 'large'],
  20. ['green', 'small'],
  21. ['green', 'large'],
  22. ['blue', 'small'],
  23. ['blue', 'large'],
  24. ]);
  25. });
  26. it('works with second array empty', () => {
  27. const result = generateAllCombinations([['red', 'green', 'blue'], []]);
  28. expect(result).toEqual([['red'], ['green'], ['blue']]);
  29. });
  30. });
  31. describe('isClassInstance()', () => {
  32. it('returns true for class instances', () => {
  33. expect(isClassInstance(new Date())).toBe(true);
  34. expect(isClassInstance(new Foo())).toBe(true);
  35. // eslint-disable-next-line no-new-wrappers
  36. expect(isClassInstance(new Number(1))).toBe(true);
  37. });
  38. it('returns false for not class instances', () => {
  39. expect(isClassInstance(Date)).toBe(false);
  40. expect(isClassInstance(1)).toBe(false);
  41. expect(isClassInstance(Number)).toBe(false);
  42. expect(isClassInstance({ a: 1 })).toBe(false);
  43. expect(isClassInstance([1, 2, 3])).toBe(false);
  44. });
  45. class Foo {}
  46. });