|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +var common = require('../common'); |
| 4 | +var assert = require('assert'); |
| 5 | +var Buffer = require('buffer').Buffer; |
| 6 | + |
| 7 | +// coerce values to string |
| 8 | +assert.equal(Buffer.byteLength(32, 'raw'), 2); |
| 9 | +assert.equal(Buffer.byteLength(NaN, 'utf8'), 3); |
| 10 | +assert.equal(Buffer.byteLength({}, 'raws'), 15); |
| 11 | +assert.equal(Buffer.byteLength(), 9); |
| 12 | + |
| 13 | +// special case: zero length string |
| 14 | +assert.equal(Buffer.byteLength('', 'ascii'), 0); |
| 15 | +assert.equal(Buffer.byteLength('', 'HeX'), 0); |
| 16 | + |
| 17 | +// utf8 |
| 18 | +assert.equal(Buffer.byteLength('∑éllö wørl∂!', 'utf-8'), 19); |
| 19 | +assert.equal(Buffer.byteLength('κλμνξο', 'utf8'), 12); |
| 20 | +assert.equal(Buffer.byteLength('挵挶挷挸挹', 'utf-8'), 15); |
| 21 | +assert.equal(Buffer.byteLength('𠝹𠱓𠱸', 'UTF8'), 12); |
| 22 | +// without an encoding, utf8 should be assumed |
| 23 | +assert.equal(Buffer.byteLength('hey there'), 9); |
| 24 | +assert.equal(Buffer.byteLength('𠱸挶νξ#xx :)'), 17); |
| 25 | +assert.equal(Buffer.byteLength('hello world', ''), 11); |
| 26 | +// it should also be assumed with unrecognized encoding |
| 27 | +assert.equal(Buffer.byteLength('hello world', 'abc'), 11); |
| 28 | +assert.equal(Buffer.byteLength('ßœ∑≈', 'unkn0wn enc0ding'), 10); |
| 29 | + |
| 30 | +// base64 |
| 31 | +assert.equal(Buffer.byteLength('aGVsbG8gd29ybGQ=', 'base64'), 11); |
| 32 | +assert.equal(Buffer.byteLength('bm9kZS5qcyByb2NrcyE=', 'base64'), 14); |
| 33 | +assert.equal(Buffer.byteLength('aGkk', 'base64'), 3); |
| 34 | +assert.equal(Buffer.byteLength('bHNrZGZsa3NqZmtsc2xrZmFqc2RsZmtqcw==', |
| 35 | + 'base64'), 25); |
| 36 | +// special padding |
| 37 | +assert.equal(Buffer.byteLength('aaa=', 'base64'), 2); |
| 38 | +assert.equal(Buffer.byteLength('aaaa==', 'base64'), 3); |
| 39 | + |
| 40 | +assert.equal(Buffer.byteLength('Il était tué'), 14); |
| 41 | +assert.equal(Buffer.byteLength('Il était tué', 'utf8'), 14); |
| 42 | +assert.equal(Buffer.byteLength('Il était tué', 'ascii'), 12); |
| 43 | +assert.equal(Buffer.byteLength('Il était tué', 'binary'), 12); |
| 44 | +['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { |
| 45 | + assert.equal(24, Buffer.byteLength('Il était tué', encoding)); |
| 46 | +}); |
0 commit comments