node-ejs-renderer/node_modules/encode-utf8/test.js
2024-06-09 13:55:01 -04:00

75 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* 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)
})
}
})
})