'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())); }); }); });