node-ejs-renderer/node_modules/encode-utf8/test.js

75 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2024-06-09 13:55:01 -04:00
/* eslint-env mocha */
'use strict'
const assert = require('assert')
const encodeUtf8 = require('./')
const testCases = [
'゚・✿ヾ╲(。◕‿◕。)╱✿・゚',
'𝌆',
'🐵 🙈 🙉 🙊',
'💩',
'åß∂ƒ©˙∆˚¬…æ',
'Hello, World!',
'Powerلُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ冗',
'𝕿𝖍𝖊 𝖖𝖚𝖎𝖈𝖐 𝖇𝖗𝖔𝖜𝖓 𝖋𝖔𝖝 𝖏𝖚𝖒𝖕𝖘 𝖔𝖛𝖊𝖗 𝖙𝖍𝖊 𝖑𝖆𝖟𝖞 𝖉𝖔𝖌',
'사회과학원 어학연구소'
]
const badStrings = [
{
input: 'abc123',
expected: [0x61, 0x62, 0x63, 0x31, 0x32, 0x33],
name: 'Sanity check'
},
{
input: '\uD800',
expected: [0xef, 0xbf, 0xbd],
name: 'Surrogate half (low)'
},
{
input: '\uDC00',
expected: [0xef, 0xbf, 0xbd],
name: 'Surrogate half (high)'
},
{
input: 'abc\uD800123',
expected: [0x61, 0x62, 0x63, 0xef, 0xbf, 0xbd, 0x31, 0x32, 0x33],
name: 'Surrogate half (low), in a string'
},
{
input: 'abc\uDC00123',
expected: [0x61, 0x62, 0x63, 0xef, 0xbf, 0xbd, 0x31, 0x32, 0x33],
name: 'Surrogate half (high), in a string'
},
{
input: '\uDC00\uD800',
expected: [0xef, 0xbf, 0xbd, 0xef, 0xbf, 0xbd],
name: 'Wrong order'
}
]
describe('encode-utf8', () => {
describe('test strings', () => {
for (const input of testCases) {
it(`should encode "${input}"`, () => {
const actual = Buffer.from(encodeUtf8(input))
const expected = Buffer.from(input, 'utf8')
assert.ok(actual.equals(expected))
})
}
})
describe('web platform test', () => {
for (const testCase of badStrings) {
it(testCase.name, () => {
const actual = Array.from(new Uint8Array(encodeUtf8(testCase.input)))
assert.deepStrictEqual(actual, testCase.expected)
})
}
})
})