UNPKG

eslint-plugin-logical-properties

Version:
134 lines (131 loc) 3.2 kB
import { describe, it, expect, } from 'vitest'; import type { TemplateString, TokenizedString, } from './tokenizeString.js'; import { getToken, stringToTemplate, tokenizeString, } from './tokenizeString.js'; describe('stringToTemplate', () => { it('should be a function', () => { expect(stringToTemplate).toBeInstanceOf(Function); }); it('should have one parameter', () => { expect(stringToTemplate.length).toBe(1); }); const testCases = [ { input: 'this is awesome', output: { quasis: ['this is awesome'], expressions: [], }, }, { input: 'this is calc(stuff)', output: { quasis: ['this is', ''], expressions: ['calc(stuff)'], }, }, { input: 'this calc(stuff) more', output: { quasis: ['this', 'more'], expressions: ['calc(stuff)'], }, }, { input: 'this calc(stuff + 2) more', output: { quasis: ['this', 'more'], expressions: ['calc(stuff + 2)'], }, }, { input: 'this calc(stuff + var(stuff) + 3) more', output: { quasis: ['this', 'more'], expressions: ['calc(stuff + var(stuff) + 3)'], }, }, { input: 'calc(stuff + var(stuff) + 3) more', output: { quasis: ['', 'more'], expressions: ['calc(stuff + var(stuff) + 3)'], }, }, { input: 'calc(stuff + var(stuff) + 3)', output: { quasis: ['', ''], expressions: ['calc(stuff + var(stuff) + 3)'], }, }, { input: 'calc(a + 1) calc(b + 2)', output: { quasis: ['', '', ''], expressions: ['calc(a + 1)', 'calc(b + 2)'], }, }, ] as const satisfies { input: string, output: TemplateString }[]; it.each(testCases)('stringToTemplate($input) = q: $output.quasis, e: $output.expressions', ({ input, output }) => { expect(stringToTemplate(input)).toEqual(output); }); }); describe('tokenizeString', () => { it('should be a function', () => { expect(tokenizeString).toBeInstanceOf(Function); }); it('should have one parameter', () => { expect(tokenizeString.length).toBe(1); }); const testCases = [ { input: { quasis: ['this'], expressions: [], }, output: { output: 'this', tokens: [], }, }, { input: { quasis: ['this', 'awesome'], expressions: ['calc(is)'], }, output: { output: `this ${getToken(0)} awesome`, tokens: [ [getToken(0), 'calc(is)'], ], }, }, { input: { quasis: ['', '', ''], expressions: ['calc(a)', 'calc(b)'], }, output: { output: `${getToken(0)} ${getToken(1)}`, tokens: [ [getToken(0), 'calc(a)'], [getToken(1), 'calc(b)'], ], }, }, ] as const satisfies { input: TemplateString, output: TokenizedString }[]; it.each(testCases)('tokenizeString(q: $input.quasis e: $input.expressions) = <$output.output> + $output.tokens', ({ input, output }) => { expect(tokenizeString(input)).toEqual(output); }); });