|
- 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<Unit>(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',
- })
- }),
- )
- })
|