| // Flags: --expose-internals |
| |
| 'use strict'; |
| |
| require('../common'); |
| |
| const assert = require('node:assert'); |
| const { internalBinding } = require('internal/test/binding'); |
| const binding = internalBinding('encoding_binding'); |
| |
| { |
| // Valid input |
| const buf = Uint8Array.from([0xC1, 0xE9, 0xF3]); |
| assert.strictEqual(binding.decodeLatin1(buf, false, false), 'Áéó'); |
| } |
| |
| { |
| // Empty input |
| const buf = Uint8Array.from([]); |
| assert.strictEqual(binding.decodeLatin1(buf, false, false), ''); |
| } |
| |
| { |
| // Invalid input, but Latin1 has no invalid chars and should never throw. |
| const buf = new TextEncoder().encode('Invalid Latin1 🧑🧑🧒🧒'); |
| assert.strictEqual( |
| binding.decodeLatin1(buf, false, false), |
| 'Invalid Latin1 ð\x9F§\x91â\x80\x8Dð\x9F§\x91â\x80\x8Dð\x9F§\x92â\x80\x8Dð\x9F§\x92' |
| ); |
| } |
| |
| { |
| // IgnoreBOM with BOM |
| const buf = Uint8Array.from([0xFE, 0xFF, 0xC1, 0xE9, 0xF3]); |
| assert.strictEqual(binding.decodeLatin1(buf, true, false), 'þÿÁéó'); |
| } |
| |
| { |
| // Fatal and InvalidInput, but Latin1 has no invalid chars and should never throw. |
| const buf = Uint8Array.from([0xFF, 0xFF, 0xFF]); |
| assert.strictEqual(binding.decodeLatin1(buf, false, true), 'ÿÿÿ'); |
| } |
| |
| { |
| // IgnoreBOM and Fatal, but Latin1 has no invalid chars and should never throw. |
| const buf = Uint8Array.from([0xFE, 0xFF, 0xC1, 0xE9, 0xF3]); |
| assert.strictEqual(binding.decodeLatin1(buf, true, true), 'þÿÁéó'); |
| } |