const sizify = require('../../src/utils/sizify'); describe('"sizify" function', () => { test('should return "0" for 0 bytes', () => { expect(sizify(0)).toBe('0'); }); test('should handle negative bytes', () => { expect(sizify(-1024)).toBe('1K'); }); test('should return correct size for small values', () => { expect(sizify(1000)).toBe('1000'); expect(sizify(1024)).toBe('1K'); }); test('should return correct size for larger values', () => { expect(sizify(1048576)).toBe('1M'); expect(sizify(1073741824)).toBe('1G'); expect(sizify(1099511627776)).toBe('1T'); expect(sizify(1125899906842624)).toBe('1P'); expect(sizify(1152921504606846976)).toBe('1E'); expect(sizify(1180591620717411303424)).toBe('1Z'); expect(sizify(1208925819614629174706176)).toBe('1Y'); expect(sizify(1237940039285380274899124224)).toBe('1R'); expect(sizify(1267650600228229401496703205376)).toBe('1Q'); }); test('should handle very large values', () => { const largeValue = 2 ** 100; // A very large number expect(sizify(largeValue)).toBe('1Q'); }); test('should add "i" suffix when addI is true', () => { expect(sizify(1024, true)).toBe('1Ki'); expect(sizify(1048576, true)).toBe('1Mi'); expect(sizify(1073741824, true)).toBe('1Gi'); }); test('should not add "i" suffix when addI is false', () => { expect(sizify(1024, false)).toBe('1K'); expect(sizify(1048576, false)).toBe('1M'); expect(sizify(1073741824, false)).toBe('1G'); }); test('should handle decimal points correctly', () => { expect(sizify(1500)).toBe('1.47K'); expect(sizify(1500000)).toBe('1.44M'); expect(sizify(1500000000)).toBe('1.4G'); }); test('should handle edge cases', () => { expect(sizify(1)).toBe('1'); expect(sizify(1023)).toBe('1023'); expect(sizify(1025)).toBe('1.01K'); }); });