12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- var assert = require('assert')
- var ref = require('../')
- describe('ref(), deref()', function () {
- beforeEach(gc)
- it('should work 1 layer deep', function () {
- var test = new Buffer('one layer deep')
- var one = ref.ref(test)
- var _test = ref.deref(one)
- assert.equal(test.length, _test.length)
- assert.equal(test.toString(), _test.toString())
- })
- it('should work 2 layers deep', function () {
- var test = new Buffer('two layers deep')
- var one = ref.ref(test)
- var two = ref.ref(one)
- var _one = ref.deref(two)
- var _test = ref.deref(_one)
- assert.equal(ref.address(one), ref.address(_one))
- assert.equal(ref.address(test), ref.address(_test))
- assert.equal(one.length, _one.length)
- assert.equal(test.length, _test.length)
- assert.equal(test.toString(), _test.toString())
- })
- it('should throw when derefing a Buffer with no "type"', function () {
- var test = new Buffer('???')
- assert.throws(function () {
- ref.deref(test)
- }, /unknown "type"/)
- })
- it('should throw when derefing a Buffer with no "type" 2', function () {
- var test = new Buffer('???')
- var r = ref.ref(test)
- var _test = ref.deref(r)
- assert.equal(ref.address(test), ref.address(_test))
- assert.throws(function () {
- ref.deref(_test)
- }, /unknown "type"/)
- })
- it('should deref() a "char" type properly', function () {
- var test = new Buffer(ref.sizeof.char)
- test.type = ref.types.char
- test[0] = 50
- assert.equal(50, ref.deref(test))
- test[0] = 127
- assert.equal(127, ref.deref(test))
- })
- it('should not throw when calling ref()/deref() on a `void` type', function () {
- var test = ref.alloc(ref.types.void)
- assert.strictEqual(null, test.deref())
- })
- })
|