36 lines
949 B
TypeScript
36 lines
949 B
TypeScript
|
|
import { describe, expect, test } from 'bun:test'
|
||
|
|
|
||
|
|
import { parseCSSColor, parseCSSNumber } from '@open-pencil/scene-graph/css'
|
||
|
|
|
||
|
|
describe('parseCSSNumber', () => {
|
||
|
|
test.each([
|
||
|
|
['12', 12],
|
||
|
|
['12px', 12],
|
||
|
|
[' -4.5PX ', -4.5],
|
||
|
|
['0.75rem', 12],
|
||
|
|
['.5', 0.5]
|
||
|
|
])('reads %p as %p pixels', (value, pixels) => {
|
||
|
|
expect(parseCSSNumber(value)).toBe(pixels)
|
||
|
|
})
|
||
|
|
|
||
|
|
test.each([undefined, '', 'auto', '50%', '1.5em', '10vh', 'calc(1px + 2px)', 'abc'])(
|
||
|
|
'reads no pixels from %p',
|
||
|
|
(value) => {
|
||
|
|
expect(parseCSSNumber(value)).toBeNull()
|
||
|
|
}
|
||
|
|
)
|
||
|
|
})
|
||
|
|
|
||
|
|
describe('parseCSSColor', () => {
|
||
|
|
test('reads a color', () => {
|
||
|
|
expect(parseCSSColor(' #ff0000 ')).toEqual({ r: 1, g: 0, b: 0, a: 1 })
|
||
|
|
})
|
||
|
|
|
||
|
|
test.each([undefined, '', 'nope', 'transparent', 'rgba(0, 0, 0, 0)', 'rgb(0 0 0 / 0)', '#0000'])(
|
||
|
|
'reads no color from %p, which paints nothing',
|
||
|
|
(value) => {
|
||
|
|
expect(parseCSSColor(value)).toBeNull()
|
||
|
|
}
|
||
|
|
)
|
||
|
|
})
|