mirror of
https://github.com/tenrok/maska.git
synced 2026-05-15 11:59:38 +03:00
68 lines
1.5 KiB
TypeScript
68 lines
1.5 KiB
TypeScript
import { expect, test } from 'vitest'
|
|
|
|
import { parseMask, parseOpts, parseTokens } from '../src/parser'
|
|
|
|
test('mask: empty', () => {
|
|
expect(parseMask('')).toBe('')
|
|
})
|
|
|
|
test('mask: string', () => {
|
|
expect(parseMask('#-#')).toBe('#-#')
|
|
})
|
|
|
|
test('mask: array', () => {
|
|
expect(parseMask('["#", "##"]')).toEqual(expect.arrayContaining(['#', '##']))
|
|
})
|
|
|
|
test('opts: empty', () => {
|
|
expect(parseOpts('')).toBe(true)
|
|
})
|
|
|
|
test('opts: true', () => {
|
|
expect(parseOpts('true')).toBe(true)
|
|
})
|
|
|
|
test('opts: truthy', () => {
|
|
expect(parseOpts('1')).toBe(true)
|
|
})
|
|
|
|
test('opts: false', () => {
|
|
expect(parseOpts('false')).toBe(false)
|
|
})
|
|
|
|
test('opts: falsy', () => {
|
|
expect(parseOpts('0')).toBe(false)
|
|
})
|
|
|
|
test('tokens: json', () => {
|
|
expect(parseTokens('{ "Z": { "pattern": "[0-9]" } }')).toEqual(
|
|
expect.objectContaining({ Z: { pattern: '[0-9]' } })
|
|
)
|
|
})
|
|
|
|
test('tokens: code', () => {
|
|
expect(parseTokens('Z:[0-9]')).toEqual(
|
|
expect.objectContaining({
|
|
Z: { pattern: /[0-9]/, multiple: false, optional: false, repeated: false }
|
|
})
|
|
)
|
|
|
|
expect(parseTokens('Z:[0-9]:multiple')).toEqual(
|
|
expect.objectContaining({
|
|
Z: { pattern: /[0-9]/, multiple: true, optional: false, repeated: false }
|
|
})
|
|
)
|
|
|
|
expect(parseTokens('Z:[0-9]:optional')).toEqual(
|
|
expect.objectContaining({
|
|
Z: { pattern: /[0-9]/, multiple: false, optional: true, repeated: false }
|
|
})
|
|
)
|
|
|
|
expect(parseTokens('Z:[0-9]:repeated')).toEqual(
|
|
expect.objectContaining({
|
|
Z: { pattern: /[0-9]/, multiple: false, optional: false, repeated: true }
|
|
})
|
|
)
|
|
})
|