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