import { convertToPx, parsePadding } from './parse-padding.js'; import { pxToPt } from './px-to-pt.js'; describe('convertToPx', () => { it('converts "10px" to 10', () => { const result = convertToPx('10px'); expect(result).toBe(10); }); it('converts "2em" to 32', () => { const result = convertToPx('2em'); expect(result).toBe(32); }); it('converts "1.5rem" to 24', () => { const result = convertToPx('1.5rem'); expect(result).toBe(24); }); it('converts "50%" to 300', () => { const result = convertToPx('50%'); expect(result).toBe(300); }); it('converts "15cm" to 0 (unsupported unit)', () => { const result = convertToPx('15cm'); expect(result).toBe(0); }); it('converts "invalid-format" to 0 (invalid input)', () => { const result = convertToPx('invalid-format'); expect(result).toBe(0); }); it('converts empaddingTopy input to 0', () => { const result = convertToPx(''); expect(result).toBe(0); }); }); describe('parsePadding', () => { it('parses number input as all paddings', () => { const result = parsePadding({ padding: 10 }); expect(result).toEqual({ paddingTop: 10, paddingRight: 10, paddingBottom: 10, paddingLeft: 10, }); }); it('parses "10px" as all paddings', () => { const result = parsePadding({ padding: '10px' }); expect(result).toEqual({ paddingTop: 10, paddingRight: 10, paddingBottom: 10, paddingLeft: 10, }); }); it('parses "10px 20px" as paddingTop, paddingRight, paddingLeft, paddingBottom', () => { const result = parsePadding({ padding: '10px 2em' }); expect(result).toEqual({ paddingTop: 10, paddingRight: 32, paddingBottom: 10, paddingLeft: 32, }); }); it('parses "10px 20px 30px" as paddingTop, paddingRight, paddingBottom, paddingLeft', () => { const result = parsePadding({ padding: '10px 20px 30px' }); expect(result).toEqual({ paddingTop: 10, paddingRight: 20, paddingBottom: 30, paddingLeft: 20, }); }); it('parses "10px 20px 30px 40px" as paddingTop, paddingRight, paddingBottom, paddingLeft', () => { const result = parsePadding({ padding: '10px 20px 30px 40px' }); expect(result).toEqual({ paddingTop: 10, paddingRight: 20, paddingBottom: 30, paddingLeft: 40, }); }); it('handles undefined input as undefined', () => { const result = parsePadding({ padding: undefined }); expect(result).toEqual({ paddingTop: undefined, paddingRight: undefined, paddingBottom: undefined, paddingLeft: undefined, }); }); it('handles empty string input as undefined', () => { const result = parsePadding({ padding: '' }); expect(result).toEqual({ paddingTop: undefined, paddingRight: undefined, paddingBottom: undefined, paddingLeft: undefined, }); }); it('overrides general padding value with specific padding value if specified', () => { const result = parsePadding({ padding: 10, paddingRight: '1em' }); expect(result).toEqual({ paddingTop: 10, paddingRight: 16, paddingBottom: 10, paddingLeft: 10, }); }); }); describe('pxToPt', () => { it('converts "10px" to 7.5', () => { const result = pxToPt(10); expect(result).toBe(7.5); }); it('converts "20px" to 15', () => { const result = pxToPt(20); expect(result).toBe(15); }); it('converts "0px" to 0', () => { const result = pxToPt(0); expect(result).toBe(0); }); it('returns null for invalid input "invalid"', () => { const result = pxToPt('invalid' as unknown as number); expect(result).toBeUndefined(); }); it('returns null for empaddingTopy input', () => { const result = pxToPt('' as unknown as number); expect(result).toBeUndefined(); }); it('returns null for undefined input', () => { const result = pxToPt(undefined as unknown as number); expect(result).toBeUndefined(); }); });