1'use strict';
2
3const common = require('../common');
4const assert = require('assert');
5
6// utf8, ucs2, ascii, latin1, utf16le
7const encodings = ['utf8', 'utf-8', 'ucs2', 'ucs-2', 'ascii', 'latin1',
8                   'binary', 'utf16le', 'utf-16le'];
9
10encodings
11  .reduce((es, e) => es.concat(e, e.toUpperCase()), [])
12  .forEach((encoding) => {
13    assert.strictEqual(Buffer.from('foo', encoding).toString(encoding), 'foo');
14  });
15
16// base64
17['base64', 'BASE64'].forEach((encoding) => {
18  assert.strictEqual(Buffer.from('Zm9v', encoding).toString(encoding), 'Zm9v');
19});
20
21// hex
22['hex', 'HEX'].forEach((encoding) => {
23  assert.strictEqual(Buffer.from('666f6f', encoding).toString(encoding),
24                     '666f6f');
25});
26
27// Invalid encodings
28for (let i = 1; i < 10; i++) {
29  const encoding = String(i).repeat(i);
30  const error = common.expectsError({
31    code: 'ERR_UNKNOWN_ENCODING',
32    name: 'TypeError',
33    message: `Unknown encoding: ${encoding}`
34  });
35  assert.ok(!Buffer.isEncoding(encoding));
36  assert.throws(() => Buffer.from('foo').toString(encoding), error);
37}
38