50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
import * as encoding from './encoding.mjs'
|
|
|
|
/**
|
|
* Check if binary encoding is compatible with golang binary encoding - binary.PutVarUint.
|
|
*
|
|
* Result: is compatible up to 32 bit: [0, 4294967295] / [0, 0xffffffff]. (max 32 bit unsigned integer)
|
|
*/
|
|
let err = null
|
|
try {
|
|
const tests = [
|
|
{ in: 0, out: [0] },
|
|
{ in: 1, out: [1] },
|
|
{ in: 128, out: [128, 1] },
|
|
{ in: 200, out: [200, 1] },
|
|
{ in: 32, out: [32] },
|
|
{ in: 500, out: [244, 3] },
|
|
{ in: 256, out: [128, 2] },
|
|
{ in: 700, out: [188, 5] },
|
|
{ in: 1024, out: [128, 8] },
|
|
{ in: 1025, out: [129, 8] },
|
|
{ in: 4048, out: [208, 31] },
|
|
{ in: 5050, out: [186, 39] },
|
|
{ in: 1000000, out: [192, 132, 61] },
|
|
{ in: 34951959, out: [151, 166, 213, 16] },
|
|
{ in: 2147483646, out: [254, 255, 255, 255, 7] },
|
|
{ in: 2147483647, out: [255, 255, 255, 255, 7] },
|
|
{ in: 2147483648, out: [128, 128, 128, 128, 8] },
|
|
{ in: 2147483700, out: [180, 128, 128, 128, 8] },
|
|
{ in: 4294967294, out: [254, 255, 255, 255, 15] },
|
|
{ in: 4294967295, out: [255, 255, 255, 255, 15] }
|
|
]
|
|
tests.forEach(test => {
|
|
const encoder = encoding.createEncoder()
|
|
encoding.writeVarUint(encoder, test.in)
|
|
const buffer = new Uint8Array(encoding.toBuffer(encoder))
|
|
if (buffer.byteLength !== test.out.length) {
|
|
throw new Error('Length don\'t match!')
|
|
}
|
|
for (let j = 0; j < buffer.length; j++) {
|
|
if (buffer[j] !== test[1][j]) {
|
|
throw new Error('values don\'t match!')
|
|
}
|
|
}
|
|
})
|
|
} catch (error) {
|
|
err = error
|
|
} finally {
|
|
console.log('YDB Client: Encoding varUint compatiblity test: ', err || 'success!')
|
|
}
|