@sutton-signwriting/core
Version:
a javascript package for node and browsers that supports general processing of the Sutton SignWriting script
112 lines (106 loc) • 2.18 kB
JavaScript
import { parse } from './swuquery-parse';
it('should parse generic queries', () => {
expect(parse('Q')).toEqual({
query: true
})
expect(parse('Q-')).toEqual({
query: true,
style: true
})
})
it('should parse prefix queries', () => {
expect(parse('QT')).toEqual({
query: true,
prefix: { required: true }
})
expect(parse('QT-')).toEqual({
query: true,
prefix: { required: true },
style: true
})
expect(parse('QART')).toEqual({
query: true,
prefix: {
required: true,
parts: [
'',
['', ''],
''
]
}
})
expect(parse('QAoRT')).toEqual({
query: true,
prefix: {
required: true,
parts: [
[
'or',
'',
['', '']
],
''
]
}
})
})
it('should parse signbox queries', () => {
expect(parse('Q')).toEqual({
query: true,
signbox: [
{ symbol: '' }
]
})
expect(parse('Qfr𝤆𝤆')).toEqual({
query: true,
signbox: [
{
symbol: 'fr',
coord: [500, 500]
}
]
})
expect(parse('QR')).toEqual({
query: true,
signbox: [
{ range: ['', ''] }
]
})
expect(parse('QR𝤆𝤆')).toEqual({
query: true,
signbox: [
{
range: ['', ''],
coord: [500, 500]
}
]
})
expect(parse('QrR𝤆𝤆')).toEqual({
query: true,
signbox: [
{ symbol: 'r' },
{
range: ['', ''],
coord: [500, 500]
}
]
})
expect(parse('QroR𝤆𝤆')).toEqual({
query: true,
signbox: [
{
or: [
'r',
['', '']
],
coord: [500, 500]
}
]
})
})
it('should not break on invalid sign or input', () => {
expect(parse()).toEqual({})
expect(parse('a')).toEqual({})
expect(parse({ 'a': 5 })).toEqual({})
expect(parse(['a'])).toEqual({})
})