rearrage_stuff
This commit is contained in:
156
node_modules/varint/test.js
generated
vendored
Normal file
156
node_modules/varint/test.js
generated
vendored
Normal file
@@ -0,0 +1,156 @@
|
||||
var varint = require('./index')
|
||||
, test = require('tape')
|
||||
, decode = varint.decode
|
||||
, encode = varint.encode
|
||||
, encodingLength = varint.encodingLength
|
||||
|
||||
test('fuzz test', function(assert) {
|
||||
var expect
|
||||
, encoded
|
||||
|
||||
for(var i = 0, len = 100; i < len; ++i) {
|
||||
expect = randint(0x7FFFFFFF)
|
||||
encoded = encode(expect)
|
||||
var data = decode(encoded)
|
||||
assert.equal(expect, data, 'fuzz test: ' + expect.toString())
|
||||
assert.equal(decode.bytes, encoded.length)
|
||||
}
|
||||
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('test single byte works as expected', function(assert) {
|
||||
var buf = new Uint8Array(2)
|
||||
buf[0] = 172
|
||||
buf[1] = 2
|
||||
var data = decode(buf)
|
||||
assert.equal(data, 300, 'should equal 300')
|
||||
assert.equal(decode.bytes, 2)
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('test encode works as expected', function(assert) {
|
||||
var out = []
|
||||
|
||||
assert.deepEqual(encode(300), [0xAC, 0x02])
|
||||
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('test decode single bytes', function(assert) {
|
||||
var expected = randint(parseInt('1111111', '2'))
|
||||
var buf = new Uint8Array(1)
|
||||
buf[0] = expected
|
||||
var data = decode(buf)
|
||||
assert.equal(data, expected)
|
||||
assert.equal(decode.bytes, 1)
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('test decode multiple bytes with zero', function(assert) {
|
||||
var expected = randint(parseInt('1111111', '2'))
|
||||
var buf = new Uint8Array(2)
|
||||
buf[0] = 128
|
||||
buf[1] = expected
|
||||
var data = decode(buf)
|
||||
assert.equal(data, expected << 7)
|
||||
assert.equal(decode.bytes, 2)
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('encode single byte', function(assert) {
|
||||
var expected = randint(parseInt('1111111', '2'))
|
||||
assert.deepEqual(encode(expected), [expected])
|
||||
assert.equal(encode.bytes, 1)
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('encode multiple byte with zero first byte', function(assert) {
|
||||
var expected = 0x0F00
|
||||
assert.deepEqual(encode(expected), [0x80, 0x1E])
|
||||
assert.equal(encode.bytes, 2)
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('big integers', function (assert) {
|
||||
|
||||
var bigs = []
|
||||
for(var i = 32; i <= 53; i++) (function (i) {
|
||||
bigs.push(Math.pow(2, i) - 1)
|
||||
})(i)
|
||||
|
||||
bigs.forEach(function (n) {
|
||||
var data = encode(n)
|
||||
console.error(n, '->', data)
|
||||
assert.equal(decode(data), n)
|
||||
assert.notEqual(decode(data), n - 1)
|
||||
})
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('fuzz test - big', function(assert) {
|
||||
var expect
|
||||
, encoded
|
||||
|
||||
var MAX_INTD = Number.MAX_SAFE_INTEGER
|
||||
var MAX_INT = Math.pow(2, 31)
|
||||
|
||||
for(var i = 0, len = 100; i < len; ++i) {
|
||||
expect = randint(MAX_INTD - MAX_INT) + MAX_INT
|
||||
encoded = encode(expect)
|
||||
var data = decode(encoded)
|
||||
assert.equal(expect, data, 'fuzz test: ' + expect.toString())
|
||||
assert.equal(decode.bytes, encoded.length)
|
||||
}
|
||||
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('encodingLength', function (assert) {
|
||||
|
||||
for(var i = 0; i <= 53; i++) {
|
||||
var n = Math.pow(2, i) - 1
|
||||
assert.equal(encode(n).length, encodingLength(n))
|
||||
}
|
||||
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('buffer too short', function (assert) {
|
||||
|
||||
var value = encode(9812938912312)
|
||||
var buffer = encode(value)
|
||||
|
||||
var l = buffer.length
|
||||
while(l--) {
|
||||
try {
|
||||
var val = decode(buffer.slice(0, l))
|
||||
} catch (err) {
|
||||
assert.equal(err.constructor, RangeError)
|
||||
assert.equal(decode.bytes, 0)
|
||||
}
|
||||
}
|
||||
assert.end()
|
||||
})
|
||||
|
||||
test('buffer too long', function (assert) {
|
||||
|
||||
var buffer = Uint8Array.from(
|
||||
Array.from({length: 150}, function () { return 0xff })
|
||||
.concat(Array.from({length: 1}, function () { return 0x1 }))
|
||||
)
|
||||
|
||||
try {
|
||||
var val = decode(buffer)
|
||||
encode(val)
|
||||
assert.fail('expected an error received value instead: ' + val)
|
||||
} catch (err) {
|
||||
assert.equal(err.constructor, RangeError)
|
||||
assert.equal(decode.bytes, 0)
|
||||
}
|
||||
assert.end()
|
||||
})
|
||||
|
||||
function randint(range) {
|
||||
return Math.floor(Math.random() * range)
|
||||
}
|
||||
Reference in New Issue
Block a user