Something went wrong. Try again.
javascript for 🐜's, a tiny runtime with big ambitions antjs.org
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293const assert = require('node:assert');
const hex = (buf) => buf.toString('hex');
// Buffer.alloc(size, fill, encoding)assert.strictEqual(hex(Buffer.alloc(5, 0xee)), 'eeeeeeeeee');assert.strictEqual(hex(Buffer.alloc(3, -1)), 'ffffff');assert.strictEqual(hex(Buffer.alloc(3, 257)), '010101');assert.strictEqual(hex(Buffer.alloc(3, 3.9)), '030303');assert.strictEqual(hex(Buffer.alloc(3, true)), '010101');assert.strictEqual(hex(Buffer.alloc(3, NaN)), '000000');assert.strictEqual(hex(Buffer.alloc(3, null)), '000000');assert.strictEqual(hex(Buffer.alloc(5, 'ab')), '6162616261');assert.strictEqual(hex(Buffer.alloc(5, 'é')), 'c3a9c3a9c3');assert.strictEqual(hex(Buffer.alloc(5, 'aabb', 'hex')), 'aabbaabbaa');assert.strictEqual(hex(Buffer.alloc(5, 'YWI=', 'base64')), '6162616261');assert.strictEqual(hex(Buffer.alloc(5, 'é', 'ucs2')), 'e900e900e9');assert.strictEqual(hex(Buffer.alloc(4, 'é', 'latin1')), 'e9e9e9e9');assert.strictEqual(hex(Buffer.alloc(3, '')), '000000');assert.strictEqual(hex(Buffer.alloc(5, Buffer.from([1, 2]))), '0102010201');assert.strictEqual(hex(Buffer.alloc(5, new Uint8Array([3]))), '0303030303');assert.strictEqual(hex(Buffer.alloc(3, 5, 'bogus')), '050505');assert.strictEqual(hex(Buffer.alloc(0, 'a', 'bogus')), '');assert.throws(() => Buffer.alloc(3, 'zz', 'hex'), { name: 'TypeError', code: 'ERR_INVALID_ARG_VALUE' });assert.throws(() => Buffer.alloc(3, Buffer.alloc(0)), { name: 'TypeError', code: 'ERR_INVALID_ARG_VALUE' });assert.throws(() => Buffer.alloc(3, 'a', 'bogus'), { name: 'TypeError', code: 'ERR_UNKNOWN_ENCODING' });
// Buffer.prototype.fill(value[, offset[, end]][, encoding])const filled = (value, ...rest) => hex(Buffer.alloc(6).fill(0xee).fill(value, ...rest));assert.notStrictEqual(Buffer.prototype.fill, Uint8Array.prototype.fill);assert.strictEqual(filled('ab'), '616261626162');assert.strictEqual(filled('ab', 1, 4), 'ee616261eeee');assert.strictEqual(filled('6162', 1, 'hex'), 'ee6162616261');assert.strictEqual(filled('6162', 1, 4, 'hex'), 'ee616261eeee');assert.strictEqual(filled('ab', 'Utf-8'), '616261626162');assert.strictEqual(filled('ab', ''), '616261626162');assert.strictEqual(filled(0x1ff, 2), 'eeeeffffffff');assert.strictEqual(filled(1, 3, 1), 'eeeeeeeeeeee');assert.strictEqual(filled(new Uint16Array([0x0102])), '020102010201');const self = Buffer.from([1, 2, 3, 4, 5]);assert.strictEqual(hex(self.fill(self.subarray(0, 2))), '0102010201');assert.throws(() => Buffer.alloc(3).fill('a', 'bogus'), { name: 'TypeError', code: 'ERR_UNKNOWN_ENCODING' });assert.throws(() => Buffer.alloc(3).fill(1, -1), { name: 'RangeError', code: 'ERR_OUT_OF_RANGE' });assert.throws(() => Buffer.alloc(3).fill(1, 1.5), { name: 'RangeError', code: 'ERR_OUT_OF_RANGE' });assert.throws(() => Buffer.alloc(3).fill(1, 0, 4), { name: 'RangeError', code: 'ERR_OUT_OF_RANGE' });assert.throws(() => Buffer.alloc(3).fill(1, '1'), { name: 'TypeError', code: 'ERR_INVALID_ARG_TYPE' });
// unknown encodings throw ERR_UNKNOWN_ENCODING instead of silently using utf8const hi = Buffer.from('hi');const unknown = (fn, message) => assert.throws(fn, (error) => { assert.ok(error instanceof TypeError); assert.strictEqual(error.code, 'ERR_UNKNOWN_ENCODING'); if (message) assert.strictEqual(error.message, message); return true;});
unknown(() => hi.toString('bogus'), 'Unknown encoding: bogus');unknown(() => hi.toString(null), 'Unknown encoding: null');unknown(() => hi.toString(''), 'Unknown encoding: ');unknown(() => Buffer.from('hi', 'bogus'));unknown(() => Buffer.alloc(4).write('hi', 'bogus'));unknown(() => Buffer.alloc(4).write('hi', 0, 'bogus'));unknown(() => Buffer.alloc(4).write('hi', 0, 2, 'bogus'));unknown(() => Buffer.alloc(4).write('hi', 0, 2, 5), 'Unknown encoding: 5');unknown(() => hi.indexOf('h', 'bogus'), 'Unknown encoding: bogus');unknown(() => hi.includes('h', 0, 'bogus'));unknown(() => hi.lastIndexOf('h', 'bogus'));
assert.strictEqual(hi.toString(), 'hi');assert.strictEqual(hi.toString(undefined), 'hi');assert.strictEqual(hi.toString('bogus', 1, 1), '');assert.strictEqual(hi.toString('UTF8'), 'hi');assert.strictEqual(hex(Buffer.from('hi', null)), '6869');assert.strictEqual(hex(Buffer.from('hi', '')), '6869');assert.strictEqual(Buffer.alloc(4).write('hi', ''), 2);assert.strictEqual(Buffer.alloc(4).write('hi', 0, 2, null), 2);assert.strictEqual(hi.indexOf(104, 'bogus'), 0);assert.strictEqual(Buffer.byteLength('hi', 'bogus'), 2);
// write validates offset/length like Nodeassert.throws(() => Buffer.alloc(4).write('hi', null), { name: 'TypeError', code: 'ERR_INVALID_ARG_TYPE' });assert.throws(() => Buffer.alloc(4).write('hi', 5), { name: 'RangeError', code: 'ERR_OUT_OF_RANGE' });assert.throws(() => Buffer.alloc(4).write('hi', 0, 5), { name: 'RangeError', code: 'ERR_OUT_OF_RANGE' });assert.strictEqual(Buffer.alloc(4).write('hi', 4), 0);assert.strictEqual(Buffer.alloc(4).write('hello', 1, 2), 2);
// hex decoding keeps the valid prefix, as Nodeassert.strictEqual(hex(Buffer.from('hi', 'hex')), '');assert.strictEqual(hex(Buffer.from('abc', 'hex')), 'ab');assert.strictEqual(hex(Buffer.from('abzz12', 'Hex')), 'ab');
console.log('ok');