|
| 1 | +import { groupNumbers } from './solution'; |
| 2 | + |
| 3 | +describe('Group Numbers | Interview | Testcases', () => { |
| 4 | + test('#1 Groups numbers with same digit multiset (ignoring zeros)', () => { |
| 5 | + const numbers = [123, 321, 1023, 3201, 112, 12]; |
| 6 | + const result = groupNumbers(numbers); |
| 7 | + expect(result).toEqual([[123, 321, 1023, 3201], [112], [12]]); |
| 8 | + }); |
| 9 | + |
| 10 | + test('#2 Handles empty array', () => { |
| 11 | + expect(groupNumbers([])).toEqual([]); |
| 12 | + }); |
| 13 | + |
| 14 | + test('#3 Single number – one group', () => { |
| 15 | + expect(groupNumbers([42])).toEqual([[42]]); |
| 16 | + }); |
| 17 | + |
| 18 | + test('#4 Numbers with zeros are grouped correctly', () => { |
| 19 | + const numbers = [101, 110, 11, 1001]; |
| 20 | + // 101 → digits {1,1} (zeros ignored) → "11" |
| 21 | + // 110 → digits {1,1} → "11" |
| 22 | + // 11 → digits {1,1} → "11" |
| 23 | + // 1001 → digits {1,1} → "11" |
| 24 | + expect(groupNumbers(numbers)).toEqual([[101, 110, 11, 1001]]); |
| 25 | + }); |
| 26 | + |
| 27 | + test('#5 Different digit counts -> different groups', () => { |
| 28 | + const numbers = [12, 122, 112]; |
| 29 | + // 12 → "12" |
| 30 | + // 122 → "122" (two 2s, one 1) |
| 31 | + // 112 → "112" (two 1s, one 2) |
| 32 | + expect(groupNumbers(numbers)).toEqual([[12], [122], [112]]); |
| 33 | + }); |
| 34 | + |
| 35 | + test('#6 Preserves input order within groups', () => { |
| 36 | + const numbers = [321, 123, 213, 321]; |
| 37 | + const result = groupNumbers(numbers); |
| 38 | + expect(result).toEqual([[321, 123, 213, 321]]); |
| 39 | + }); |
| 40 | + |
| 41 | + test('#7 Groups with same digits but different zeros', () => { |
| 42 | + const numbers = [105, 501, 150, 51]; |
| 43 | + // 105 → "15" |
| 44 | + // 501 → "15" |
| 45 | + // 150 → "15" |
| 46 | + // 51 → "15" |
| 47 | + expect(groupNumbers(numbers)).toEqual([[105, 501, 150, 51]]); |
| 48 | + }); |
| 49 | + |
| 50 | + test('#8 Groups appear in order of first occurrence', () => { |
| 51 | + const numbers = [99, 123, 90009, 1032, 45, 54]; |
| 52 | + // 99 → "99" |
| 53 | + // 123 → "123" |
| 54 | + // 90009 → "99" |
| 55 | + // 1032 → "123" |
| 56 | + // 45 → "45" |
| 57 | + // 54 → "45" |
| 58 | + expect(groupNumbers(numbers)).toEqual([ |
| 59 | + [99, 90009], |
| 60 | + [123, 1032], |
| 61 | + [45, 54], |
| 62 | + ]); |
| 63 | + }); |
| 64 | +}); |
0 commit comments