// Flags: --expose-internals 'use strict'; // This tests internal mapping of the Node.js encoding implementation require('../common'); const assert = require('assert'); const { getEncodingFromLabel } = require('internal/encoding'); // Test Encoding Mappings { const mappings = { 'utf-8': [ 'unicode-1-1-utf-8', 'utf8' ], 'utf-16be': [], 'utf-16le': [ 'utf-16' ], 'ibm866': [ '866', 'cp866', 'csibm866' ], 'iso-8859-2': [ 'csisolatin2', 'iso-ir-101', 'iso8859-2', 'iso88592', 'iso_8859-2', 'iso_8859-2:1987', 'l2', 'latin2' ], 'iso-8859-3': [ 'csisolatin3', 'iso-ir-109', 'iso8859-3', 'iso88593', 'iso_8859-3', 'iso_8859-3:1988', 'l3', 'latin3' ], 'iso-8859-4': [ 'csisolatin4', 'iso-ir-110', 'iso8859-4', 'iso88594', 'iso_8859-4', 'iso_8859-4:1988', 'l4', 'latin4' ], 'iso-8859-5': [ 'csisolatincyrillic', 'cyrillic', 'iso-ir-144', 'iso8859-5', 'iso88595', 'iso_8859-5', 'iso_8859-5:1988' ], 'iso-8859-6': [ 'arabic', 'asmo-708', 'csiso88596e', 'csiso88596i', 'csisolatinarabic', 'ecma-114', 'iso-8859-6-e', 'iso-8859-6-i', 'iso-ir-127', 'iso8859-6', 'iso88596', 'iso_8859-6', 'iso_8859-6:1987' ], 'iso-8859-7': [ 'csisolatingreek', 'ecma-118', 'elot_928', 'greek', 'greek8', 'iso-ir-126', 'iso8859-7', 'iso88597', 'iso_8859-7', 'iso_8859-7:1987', 'sun_eu_greek' ], 'iso-8859-8': [ 'csiso88598e', 'csisolatinhebrew', 'hebrew', 'iso-8859-8-e', 'iso-ir-138', 'iso8859-8', 'iso88598', 'iso_8859-8', 'iso_8859-8:1988', 'visual' ], 'iso-8859-8-i': [ 'csiso88598i', 'logical' ], 'iso-8859-10': [ 'csisolatin6', 'iso-ir-157', 'iso8859-10', 'iso885910', 'l6', 'latin6' ], 'iso-8859-13': [ 'iso8859-13', 'iso885913' ], 'iso-8859-14': [ 'iso8859-14', 'iso885914' ], 'iso-8859-15': [ 'csisolatin9', 'iso8859-15', 'iso885915', 'iso_8859-15', 'l9' ], 'koi8-r': [ 'cskoi8r', 'koi', 'koi8', 'koi8_r' ], 'koi8-u': [ 'koi8-ru' ], 'macintosh': [ 'csmacintosh', 'mac', 'x-mac-roman' ], 'windows-874': [ 'dos-874', 'iso-8859-11', 'iso8859-11', 'iso885911', 'tis-620' ], 'windows-1250': [ 'cp1250', 'x-cp1250' ], 'windows-1251': [ 'cp1251', 'x-cp1251' ], 'windows-1252': [ 'ansi_x3.4-1968', 'ascii', 'cp1252', 'cp819', 'csisolatin1', 'ibm819', 'iso-8859-1', 'iso-ir-100', 'iso8859-1', 'iso88591', 'iso_8859-1', 'iso_8859-1:1987', 'l1', 'latin1', 'us-ascii', 'x-cp1252' ], 'windows-1253': [ 'cp1253', 'x-cp1253' ], 'windows-1254': [ 'cp1254', 'csisolatin5', 'iso-8859-9', 'iso-ir-148', 'iso8859-9', 'iso88599', 'iso_8859-9', 'iso_8859-9:1989', 'l5', 'latin5', 'x-cp1254' ], 'windows-1255': [ 'cp1255', 'x-cp1255' ], 'windows-1256': [ 'cp1256', 'x-cp1256' ], 'windows-1257': [ 'cp1257', 'x-cp1257' ], 'windows-1258': [ 'cp1258', 'x-cp1258' ], 'x-mac-cyrillic': [ 'x-mac-ukrainian' ], 'gbk': [ 'chinese', 'csgb2312', 'csiso58gb231280', 'gb2312', 'gb_2312', 'gb_2312-80', 'iso-ir-58', 'x-gbk' ], 'gb18030': [ ], 'big5': [ 'big5-hkscs', 'cn-big5', 'csbig5', 'x-x-big5' ], 'euc-jp': [ 'cseucpkdfmtjapanese', 'x-euc-jp' ], 'iso-2022-jp': [ 'csiso2022jp' ], 'shift_jis': [ 'csshiftjis', 'ms932', 'ms_kanji', 'shift-jis', 'sjis', 'windows-31j', 'x-sjis' ], 'euc-kr': [ ' euc-kr \t', 'EUC-kr \n', 'cseuckr', 'csksc56011987', 'iso-ir-149', 'korean', 'ks_c_5601-1987', 'ks_c_5601-1989', 'ksc5601', 'ksc_5601', 'windows-949' ] }; Object.entries(mappings).forEach((i) => { const enc = i[0]; const labels = i[1]; assert.strictEqual(getEncodingFromLabel(enc), enc); labels.forEach((l) => assert.strictEqual(getEncodingFromLabel(l), enc)); }); assert.strictEqual(getEncodingFromLabel('made-up'), undefined); }