@sutton-signwriting/core
Version:
a javascript package for node and browsers that supports general processing of the Sutton SignWriting script
159 lines (132 loc) âą 4.16 kB
JavaScript
import { encode, decode, pair, parse } from './swu-parse';
it('should parse a symbol', () => {
expect(parse.symbol('ń')).toEqual({ symbol: 'ń' })
})
it('should parse a symbol with coordinate', () => {
expect(parse.symbol('ńđ€đ€')).toEqual({ symbol: 'ń', coord: [500, 500] })
})
it('should parse a symbol with style', () => {
expect(parse.symbol('ń-C')).toEqual({ symbol: 'ń', style: '-C' })
})
it('should not break on invalid symbol key or input', () => {
expect(parse.symbol()).toEqual({})
expect(parse.symbol('a')).toEqual({})
expect(parse.symbol({ 'a': 5 })).toEqual({})
expect(parse.symbol(['a'])).toEqual({})
})
it('should parse an empty signbox', () => {
expect(parse.sign('đ đ€đ€')).toEqual({
box: 'đ ',
max: [500, 500]
})
})
it('should parse a plain signbox', () => {
expect(parse.sign('đ đ€đ€©ń©đŁ”đ€ńđ€đŁ€ń„đ€đ€ńđŁźđŁ')).toEqual({
box: 'đ ',
max: [525, 535],
spatials: [
{
symbol: 'ń©',
coord: [483, 510]
},
{
symbol: 'ń',
coord: [501, 466]
},
{
symbol: 'ń„',
coord: [510, 500]
},
{
symbol: 'ń',
coord: [476, 475]
}
]
})
})
it('should parse a prefixed signbox', () => {
expect(parse.sign('đ ńńń„ń©đ đ€đ€©ń©đŁ”đ€ńđ€đŁ€ń„đ€đ€ńđŁźđŁ')).toEqual({
sequence: ['ń', 'ń', 'ń„', 'ń©'],
box: 'đ ',
max: [525, 535],
spatials: [
{
symbol: 'ń©',
coord: [483, 510]
},
{
symbol: 'ń',
coord: [501, 466]
},
{
symbol: 'ń„',
coord: [510, 500]
},
{
symbol: 'ń',
coord: [476, 475]
}
]
})
})
it('should parse a prefixed signbox with style', () => {
expect(parse.sign('đ ńńń„ń©đ đ€đ€©ń©đŁ”đ€ńđ€đŁ€ń„đ€đ€ńđŁźđŁ-C')).toEqual({
sequence: ['ń', 'ń', 'ń„', 'ń©'],
box: 'đ ',
max: [525, 535],
spatials: [
{
symbol: 'ń©',
coord: [483, 510]
},
{
symbol: 'ń',
coord: [501, 466]
},
{
symbol: 'ń„',
coord: [510, 500]
},
{
symbol: 'ń',
coord: [476, 475]
}
],
style: '-C'
})
})
it('should not break on invalid sign or input', () => {
expect(parse.sign()).toEqual({})
expect(parse.sign('a')).toEqual({})
expect(parse.sign({ 'a': 5 })).toEqual({})
expect(parse.sign(['a'])).toEqual({})
})
it('should parse a text', () => {
expect(parse.text('đ ńČĄń©§đ đ€đ€ŁńČĄđŁłđŁ©ń©§đ€đŁ» đ ńąń«ńńĄđ đ€đ€§ń«đŁ»đ€ńąđŁŽđŁŒńĄđ€đ€ńđ€đŁŠ ńđŁąđ€')).toEqual([
'đ ńČĄń©§đ đ€đ€ŁńČĄđŁłđŁ©ń©§đ€đŁ»',
'đ ńąń«ńńĄđ đ€đ€§ń«đŁ»đ€ńąđŁŽđŁŒńĄđ€đ€ńđ€đŁŠ',
'ńđŁąđ€'
])
})
it('should parse a text with style', () => {
expect(parse.text('đ ńČĄń©§đ đ€đ€ŁńČĄđŁłđŁ©ń©§đ€đŁ»-C đ ńąń«ńńĄđ đ€đ€§ń«đŁ»đ€ńąđŁŽđŁŒńĄđ€đ€ńđ€đŁŠ ńđŁąđ€-Z2')).toEqual([
'đ ńČĄń©§đ đ€đ€ŁńČĄđŁłđŁ©ń©§đ€đŁ»-C',
'đ ńąń«ńńĄđ đ€đ€§ń«đŁ»đ€ńąđŁŽđŁŒńĄđ€đ€ńđ€đŁŠ',
'ńđŁąđ€-Z2'
])
})
it('should not break on invalid text or input', () => {
expect(parse.text()).toEqual([])
expect(parse.text('a')).toEqual([])
expect(parse.text({ 'a': 5 })).toEqual([])
expect(parse.text(['a'])).toEqual([])
})
it('should encode swu characters', () => {
expect(encode('ńđ€đ€')).toBe('\\uD8C0\\uDC01\\uD836\\uDD06\\uD836\\uDD06');
})
it('should decode swu characters', () => {
expect(decode('\\uD8C0\\uDC01\\uD836\\uDD06\\uD836\\uDD06')).toBe('ńđ€đ€');
})
it('should return the utf-16 pair for a swu char', () => {
expect(pair('ń')).toEqual(['D8C0', 'DC01']);
})