1'use strict';
2
3const common = require('../common.js');
4const assert = require('assert');
5
6const groupedInputs = {
7  group_common: ['undefined', 'utf8', 'utf-8', 'base64',
8                 'binary', 'latin1', 'ucs2'],
9  group_upper: ['UTF-8', 'UTF8', 'UCS2',
10                'UTF16LE', 'BASE64', 'UCS2'],
11  group_uncommon: ['foo'],
12  group_misc: ['', 'utf16le', 'hex', 'HEX', 'BINARY'],
13};
14
15const inputs = [
16  '', 'utf8', 'utf-8', 'UTF-8', 'UTF8', 'Utf8',
17  'ucs2', 'UCS2', 'utf16le', 'UTF16LE',
18  'binary', 'BINARY', 'latin1', 'base64', 'BASE64',
19  'hex', 'HEX', 'foo', 'undefined',
20];
21
22const bench = common.createBenchmark(main, {
23  input: inputs.concat(Object.keys(groupedInputs)),
24  n: [1e5],
25}, {
26  flags: '--expose-internals',
27});
28
29function getInput(input) {
30  switch (input) {
31    case 'group_common':
32      return groupedInputs.group_common;
33    case 'group_upper':
34      return groupedInputs.group_upper;
35    case 'group_uncommon':
36      return groupedInputs.group_uncommon;
37    case 'group_misc':
38      return groupedInputs.group_misc;
39    case 'undefined':
40      return [undefined];
41    default:
42      return [input];
43  }
44}
45
46function main({ input, n }) {
47  const { normalizeEncoding } = require('internal/util');
48  const inputs = getInput(input);
49  let noDead = '';
50
51  bench.start();
52  for (let i = 0; i < n; ++i) {
53    for (let j = 0; j < inputs.length; ++j) {
54      noDead = normalizeEncoding(inputs[j]);
55    }
56  }
57  bench.end(n);
58  assert.ok(noDead === undefined || noDead.length > 0);
59}
60