linx-simulator2/node_modules/ref/test/coerce.js
2019-09-18 11:11:16 +03:00

49 lines
1.4 KiB
JavaScript

var assert = require('assert')
var ref = require('../')
describe('coerce', function () {
it('should return `ref.types.void` for "void"', function () {
var type = ref.coerceType('void')
assert.strictEqual(ref.types.void, type)
})
it('should return a ref type when a "*" is present', function () {
var type = ref.coerceType('void *')
assert(type !== ref.types.void)
assert.equal(type.indirection, ref.types.void.indirection + 1)
})
it('should coerce the "type" property of a Buffer', function () {
var buf = new Buffer(ref.sizeof.int)
buf.type = 'int'
var type = ref.getType(buf)
assert.strictEqual(ref.types.int, type)
assert.strictEqual('int', buf.type)
})
it('should coerce "Object" to `ref.types.Object`', function () {
assert.strictEqual(ref.types.Object, ref.coerceType('Object'))
})
it('should coerce the optional type in `ref.get()`', function () {
var b = new Buffer(ref.sizeof.int8)
b[0] = 5
assert.strictEqual(5, ref.get(b, 0, 'int8'))
})
it('should coerce the optional type in `ref.set()`', function () {
var b = new Buffer(ref.sizeof.int8)
ref.set(b, 0, 5, 'int8')
assert.strictEqual(5, b[0])
})
it('should throw a TypeError if a "type" can not be inferred', function () {
assert.throws(function () {
ref.coerceType({ })
}, /could not determine a proper \"type\"/)
})
})