@ -39,7 +39,7 @@ function Range (a, b, f) {
return _range
}
var UINT53_MAX = Math.pow(2, 53) - 1
var INT53_MAX = Math.pow(2, 53) - 1
function Finite (value) {
return typeof value === 'number' && isFinite(value)
@ -47,13 +47,19 @@ function Finite (value) {
function Int8 (value) { return ((value << 24) >> 24) === value }
function Int16 (value) { return ((value << 16) >> 16) === value }
function Int32 (value) { return (value | 0) === value }
function Int53 (value) {
return typeof value === 'number' &&
value >= -INT53_MAX &&
value <= INT53_MAX &&
Math.floor(value) === value
function UInt8 (value) { return (value & 0xff) === value }
function UInt16 (value) { return (value & 0xffff) === value }
function UInt32 (value) { return (value >>> 0) === value }
function UInt53 (value) {
value >= 0 &&
value <= UINT53_MAX &&
@ -67,6 +73,7 @@ var types = {
Int8: Int8,
Int16: Int16,
Int32: Int32,
Int53: Int53,
Range: Range,
StringN: _StringN,
UInt8: UInt8,
@ -61,6 +61,8 @@ const VALUES2 = [
{ a: 'foo', b: { c: 'bar' } }
]
const INT53_MAX = Math.pow(2, 53) - 1
// extra
const VALUESX = [
'fff',
@ -77,8 +79,10 @@ const VALUESX = [
0xffff,
0x10000,
0xffffffff,
9007199254740991,
9007199254740994
INT53_MAX,
INT53_MAX + 3,
-INT53_MAX,
-INT53_MAX - 3
const fixtures = {
@ -44,6 +44,7 @@ module.exports = {
'Int8': typeforce.Int8,
'Int16': typeforce.Int16,
'Int32': typeforce.Int32,
'Int53': typeforce.Int53,
'UInt8': typeforce.UInt8,
'UInt16': typeforce.UInt16,
'UInt32': typeforce.UInt32,