precis-js
Version:
A JavaScript implementation of RFC 7564 (The PRECIS Framework).
85 lines (70 loc) • 4.71 kB
text/coffeescript
fs = require 'fs'
UnicodeTrie = require 'unicode-trie'
CodepointPropertyReader = require '../../../src/unicode/CodepointPropertyReader'
precis = require '../../../src/constants'
describe 'CodepointPropertyReader', ->
before ->
data = fs.readFileSync __dirname + '/../../../data/properties.trie'
= new UnicodeTrie data
beforeEach ->
= new CodepointPropertyReader
describe 'precisCategory()', ->
it 'returns correct PRECIS categories', ->
assert.strictEqual .precisCategory(0x0000), precis.PRECIS_CATEGORY.DISALLOWED
assert.strictEqual .precisCategory(0x0020), precis.PRECIS_CATEGORY.FREE_PVAL
assert.strictEqual .precisCategory(0x0021), precis.PRECIS_CATEGORY.PVALID
assert.strictEqual .precisCategory(0x007F), precis.PRECIS_CATEGORY.DISALLOWED
assert.strictEqual .precisCategory(0x00B7), precis.PRECIS_CATEGORY.CONTEXTO
assert.strictEqual .precisCategory(0x0378), precis.PRECIS_CATEGORY.UNASSIGNED
assert.strictEqual .precisCategory(0x200C), precis.PRECIS_CATEGORY.CONTEXTJ
describe 'bidiClass()', ->
it 'returns correct Bidi classes', ->
assert.strictEqual .bidiClass(0x0000), precis.BIDI_CLASS.BN, 'BN'
assert.strictEqual .bidiClass(0x0009), precis.BIDI_CLASS.OTHER, 'S'
assert.strictEqual .bidiClass(0x000A), precis.BIDI_CLASS.OTHER, 'B'
assert.strictEqual .bidiClass(0x000C), precis.BIDI_CLASS.OTHER, 'WS'
assert.strictEqual .bidiClass(0x0021), precis.BIDI_CLASS.ON, 'ON'
assert.strictEqual .bidiClass(0x0023), precis.BIDI_CLASS.ET, 'ET'
assert.strictEqual .bidiClass(0x002B), precis.BIDI_CLASS.ES, 'ES'
assert.strictEqual .bidiClass(0x002C), precis.BIDI_CLASS.CS, 'CS'
assert.strictEqual .bidiClass(0x0030), precis.BIDI_CLASS.EN, 'EN'
assert.strictEqual .bidiClass(0x0041), precis.BIDI_CLASS.L, 'L'
assert.strictEqual .bidiClass(0x0300), precis.BIDI_CLASS.NSM, 'NSM'
assert.strictEqual .bidiClass(0x05BE), precis.BIDI_CLASS.R, 'R'
assert.strictEqual .bidiClass(0x0600), precis.BIDI_CLASS.AN, 'AN'
assert.strictEqual .bidiClass(0x0608), precis.BIDI_CLASS.AL, 'AL'
assert.strictEqual .bidiClass(0x202A), precis.BIDI_CLASS.OTHER, 'LRE'
assert.strictEqual .bidiClass(0x202B), precis.BIDI_CLASS.OTHER, 'RLE'
assert.strictEqual .bidiClass(0x202C), precis.BIDI_CLASS.OTHER, 'PDF'
assert.strictEqual .bidiClass(0x202D), precis.BIDI_CLASS.OTHER, 'LRO'
assert.strictEqual .bidiClass(0x202E), precis.BIDI_CLASS.OTHER, 'RLO'
assert.strictEqual .bidiClass(0x2066), precis.BIDI_CLASS.OTHER, 'LRI'
assert.strictEqual .bidiClass(0x2067), precis.BIDI_CLASS.OTHER, 'RLI'
assert.strictEqual .bidiClass(0x2068), precis.BIDI_CLASS.OTHER, 'FSI'
assert.strictEqual .bidiClass(0x2069), precis.BIDI_CLASS.OTHER, 'PDI'
describe 'isNonAsciiSpace()', ->
it 'returns truthy for non-ASCII space separators', ->
assert.ok .isNonAsciiSpace 0x00A0
assert.ok .isNonAsciiSpace 0x1680
assert.ok .isNonAsciiSpace 0x2000
assert.ok .isNonAsciiSpace 0x2001
assert.ok .isNonAsciiSpace 0x2002
assert.ok .isNonAsciiSpace 0x2003
assert.ok .isNonAsciiSpace 0x2004
assert.ok .isNonAsciiSpace 0x2005
assert.ok .isNonAsciiSpace 0x2006
assert.ok .isNonAsciiSpace 0x2007
assert.ok .isNonAsciiSpace 0x2008
assert.ok .isNonAsciiSpace 0x2009
assert.ok .isNonAsciiSpace 0x200A
assert.ok .isNonAsciiSpace 0x202F
assert.ok .isNonAsciiSpace 0x205F
assert.ok .isNonAsciiSpace 0x3000
it 'returns falsy for the ASCII space codepoint', ->
assert.notOk .isNonAsciiSpace 0x0020
it 'returns falsy for non-space characters', ->
assert.notOk .isNonAsciiSpace 0x0030
it 'returns falsy for line separators', ->
assert.notOk .isNonAsciiSpace 0x2028
it 'returns falsy for paragraph separators', ->
assert.notOk .isNonAsciiSpace 0x2029