css-doodle/test/parse-value-group.js

100 lines
2.0 KiB
JavaScript

import test from 'ava';
import parseValueGroup from '../src/parser/parse-value-group.js';
import compare from './_compare.js';
test('basic value group', t => {
compare.use(parseValueGroup);
compare(t, undefined, []);
compare(t, '', []);
compare(t, 'a', ['a']);
compare(t, 'a, b', ['a', 'b']);
compare(t, 'a, b, c', ['a', 'b', 'c']);
compare(t, 'a, b-c', ['a', 'b-c']);
compare(t, 'a, var(--a,b)', ['a', 'var(--a,b)']);
compare(t, 'a b', ['a', 'b']);
compare(t, 'a @p(a, b)', ['a', '@p(a,b)']);
compare(t, 'a "hello world"', ['a', '"hello world"']);
compare(t, 'a, "hello, world"', ['a', '"hello, world"']);
compare(t, 'a, , @p(a,b)', ['a', '', '@p(a,b)']);
compare(t, '10px calc(10px / 5)', ['10px', 'calc(10px / 5)']);
});
test('no space option', t => {
compare.use(input => {
return parseValueGroup(input, { noSpace: true });
});
compare(t, 'a b', ['a b']);
compare(t, 'a b', ['a b']);
compare(t, 'a "hello, world"', ['a "hello, world"']);
compare(t, 'a,b', ['a', 'b']);
compare(t, 'a, b', ['a', 'b']);
});
test('grid value', t => {
compare.use(input => {
return parseValueGroup(input, { symbol: '/', noSpace: true });
});
compare(t, '5 / 100%', ['5', '100%']);
compare(t, '5/100%', ['5', '100%']);
compare(t, '5 / calc(100% / 5)', ['5', 'calc(100% / 5)']);
compare(t, '5x10 / @r(100px)', ['5x10', '@r(100px)']);
});
test('space as separator', t => {
compare.use(input => {
return parseValueGroup(input, { symbol: ' ' });
});
compare(t, '5 100%', ['5', '100%']);
compare(t, '5,100%', ['5,100%']);
compare(t, '5, 100% 5', ['5,100%', '5']);
compare(t, '5, 100% 5 8', ['5,100%', '5', '8']);
});
test('verbose option', t => {
compare.use(input => {
return parseValueGroup(input, { symbol: ['v', 'h'], noSpace: true, verbose: true });
});
compare(t, 'v 10 h -10 v 5', [
{ group: 'v', value: '10' },
{ group: 'h', value: '-10' },
{ group: 'v', value: '5' },
]);
});