import * as fc from 'fast-check' import splitValueAndUnit, { Unit } from './splitValueAndUnit' it('should exist', () => { expect(splitValueAndUnit).toBeDefined() }) it('should be a function', () => { expect(splitValueAndUnit).toBeFunction() }) it('should accept 1 argument', () => { expect(splitValueAndUnit).toHaveLength(1) }) it('should throw a TypeError when invalid values are supplied', () => { fc.assert( fc.property(fc.anything().filter((s) => !['string', 'number'].includes(typeof s)), (s) => { expect(() => splitValueAndUnit(s)).toThrowError(TypeError) }), ) }) it('should parse valid CSS numbers', () => { fc.assert( fc.property( fc.tuple(fc.float(), fc.oneof(fc.constant('px'), fc.constant('rem'), fc.constant('%'))), ([magnitude, unit]) => { expect(splitValueAndUnit(`${magnitude}${unit}`)).toEqual({ magnitude, unit, }) }, ), ) }) it('should parse numbers as CSS numbers with implicit pixel units', () => { fc.assert( fc.property(fc.float(), (magnitude) => { expect(splitValueAndUnit(magnitude)).toEqual({ magnitude, unit: 'px', }) }), ) })