shared-utils.spec.ts 1.7 KB

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