2025-04-28 12:25:20 +08:00

50 lines
1.8 KiB
JavaScript

'use strict';
const assert = require('assert');
const ref = require('../');
const inspect = require('util').inspect;
describe('address', function() {
const buf = Buffer.from('hello');
it('should return 0 for the NULL pointer', function() {
assert.strictEqual(0, ref.address(ref.NULL));
});
it('should give a positive value for any other Buffer', function() {
const address = ref.address(buf);
assert.strictEqual(typeof address, 'number');
assert(isFinite(address));
assert(address > 0);
});
it('should accept an offset value for the 2nd argument', function() {
const address = ref.address(buf);
assert.strictEqual(address + 0, ref.address(buf, 0));
assert.strictEqual(address + 1, ref.address(buf, 1));
assert.strictEqual(address + 2, ref.address(buf, 2));
assert.strictEqual(address + 3, ref.address(buf, 3));
assert.strictEqual(address + 4, ref.address(buf, 4));
assert.strictEqual(address + 5, ref.address(buf, 5));
})
it('should accept a negative offset value for the 2nd argument', function() {
const address = ref.address(buf)
assert.strictEqual(address - 0, ref.address(buf, -0));
assert.strictEqual(address - 1, ref.address(buf, -1));
assert.strictEqual(address - 2, ref.address(buf, -2));
assert.strictEqual(address - 3, ref.address(buf, -3));
assert.strictEqual(address - 4, ref.address(buf, -4));
assert.strictEqual(address - 5, ref.address(buf, -5));
})
it('should have an offset of zero when none is given', function() {
assert.strictEqual(ref.address(buf), ref.address(buf, 0));
});
describe('inspect()', function() {
it('should overwrite the default Buffer#inspect() to print the memory address', function() {
assert(inspect(buf).includes(buf.hexAddress()));
});
});
});