UNPKG

@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
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']); })