2014-03-31 05:47:47 +02:00
|
|
|
var assert = require('assert')
|
2014-04-24 00:44:59 +02:00
|
|
|
var convert = require('../').convert
|
2013-02-17 06:39:15 +01:00
|
|
|
|
2014-01-11 07:57:43 +01:00
|
|
|
describe('convert', function() {
|
2014-03-31 05:47:47 +02:00
|
|
|
describe('bytesToHex', function() {
|
|
|
|
it('handles example 1', function() {
|
|
|
|
assert.equal(convert.bytesToHex([0, 1, 2, 255]), '000102ff')
|
2014-01-11 07:57:43 +01:00
|
|
|
})
|
2014-03-31 05:47:47 +02:00
|
|
|
})
|
2013-02-17 06:39:15 +01:00
|
|
|
|
2014-03-31 05:47:47 +02:00
|
|
|
describe('hexToBytes', function() {
|
|
|
|
it('handles example 1', function() {
|
|
|
|
assert.deepEqual(convert.hexToBytes('000102ff'), [0, 1, 2, 255])
|
2014-01-11 07:57:43 +01:00
|
|
|
})
|
2014-03-31 05:47:47 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
it('converts from bytes to hex and back', function() {
|
|
|
|
var bytes = []
|
|
|
|
for (var i=0 ; i<256 ; ++i) {
|
|
|
|
bytes.push(i)
|
|
|
|
}
|
|
|
|
|
|
|
|
var hex = convert.bytesToHex(bytes)
|
|
|
|
assert.equal(hex.length, 512)
|
|
|
|
assert.deepEqual(convert.hexToBytes(hex), bytes)
|
|
|
|
})
|
|
|
|
|
|
|
|
describe('byte array and word array conversions', function(){
|
|
|
|
var bytes, wordArray
|
|
|
|
|
|
|
|
beforeEach(function(){
|
|
|
|
bytes = [
|
|
|
|
98, 233, 7, 177, 92, 191, 39, 213, 66, 83,
|
|
|
|
153, 235, 246, 240, 251, 80, 235, 184, 143, 24
|
|
|
|
]
|
|
|
|
wordArray = {
|
|
|
|
words: [1659439025, 1556031445, 1112775147, -151979184, -340226280],
|
|
|
|
sigBytes: 20
|
|
|
|
}
|
2014-03-11 02:52:48 +01:00
|
|
|
})
|
2014-03-25 19:03:27 +01:00
|
|
|
|
2014-03-31 05:47:47 +02:00
|
|
|
describe('bytesToWords', function() {
|
|
|
|
it('works', function() {
|
|
|
|
assert.deepEqual(convert.bytesToWordArray(bytes), wordArray)
|
2014-03-25 19:03:27 +01:00
|
|
|
})
|
|
|
|
})
|
2014-03-22 07:37:09 +01:00
|
|
|
|
2014-03-31 05:47:47 +02:00
|
|
|
describe('bytesToWords', function() {
|
|
|
|
it('works', function() {
|
|
|
|
assert.deepEqual(convert.wordArrayToBytes(wordArray), bytes)
|
2014-03-26 08:30:17 +01:00
|
|
|
})
|
|
|
|
})
|
2014-03-31 05:47:47 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
describe('numToVarInt', function() {
|
|
|
|
describe('works', function() {
|
|
|
|
var data = [
|
|
|
|
0, 128, 252, // 8-bit
|
|
|
|
256, 512, 1024, // 16-bit
|
|
|
|
65541, // 32-bit
|
|
|
|
4294967299, // 64-bit
|
|
|
|
]
|
|
|
|
var expected = [
|
|
|
|
[0], [128], [252], // 8-bit
|
|
|
|
[253, 0, 1], [253, 0, 2], [253, 0, 4], // 16-bit
|
|
|
|
[254, 5, 0, 1, 0], // 32-bit
|
|
|
|
[255, 3, 0, 0, 0, 1, 0, 0, 0] // 64-bit
|
|
|
|
]
|
|
|
|
|
|
|
|
for (var i = 0; i < data.length; ++i) {
|
|
|
|
var actual = convert.numToVarInt(data[i])
|
|
|
|
assert.deepEqual(actual, expected[i])
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
describe('varIntToNum', function() {
|
|
|
|
it('works on valid input', function() {
|
|
|
|
var data = [
|
|
|
|
[0], [128], [252], // 8-bit
|
|
|
|
[253, 0, 1], [253, 0, 2], [253, 0, 4], // 16-bit
|
|
|
|
[254, 5, 0, 1, 0], // 32-bit
|
|
|
|
[255, 3, 0, 0, 0, 1, 0, 0, 0] // 64-bit
|
|
|
|
]
|
|
|
|
var expected = [
|
|
|
|
0, 128, 252, // 8-bit
|
|
|
|
256, 512, 1024, // 16-bit
|
|
|
|
65541, // 32-bit
|
|
|
|
4294967299, // 64-bit
|
|
|
|
]
|
|
|
|
|
|
|
|
for (var i = 0; i < data.length; ++i) {
|
|
|
|
var actual = convert.varIntToNum(data[i])
|
|
|
|
assert.equal(actual.number, expected[i])
|
|
|
|
assert.deepEqual(actual.bytes, data[i])
|
|
|
|
}
|
|
|
|
})
|
2014-03-26 08:30:17 +01:00
|
|
|
|
2014-03-31 05:47:47 +02:00
|
|
|
it('uses only what is necessary', function() {
|
|
|
|
var data = [
|
|
|
|
[0, 99],
|
|
|
|
[253, 0, 1, 99],
|
|
|
|
[254, 5, 0, 1, 0, 99],
|
|
|
|
[255, 3, 0, 0, 0, 1, 0, 0, 0, 99]
|
|
|
|
]
|
|
|
|
var expected = [0, 256, 65541, 4294967299]
|
|
|
|
|
|
|
|
for (var i = 0; i < data.length; ++i) {
|
|
|
|
var actual = convert.varIntToNum(data[i])
|
|
|
|
assert.equal(actual.number, expected[i])
|
|
|
|
assert.deepEqual(actual.bytes, data[i].slice(0, -1))
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
describe('reverseEndian', function() {
|
|
|
|
it('works', function() {
|
|
|
|
var bigEndian = "6a4062273ac4f9ea4ffca52d9fd102b08f6c32faa0a4d1318e3a7b2e437bb9c7"
|
|
|
|
var littleEdian = "c7b97b432e7b3a8e31d1a4a0fa326c8fb002d19f2da5fc4feaf9c43a2762406a"
|
|
|
|
assert.deepEqual(convert.reverseEndian(bigEndian), littleEdian)
|
|
|
|
assert.deepEqual(convert.reverseEndian(littleEdian), bigEndian)
|
2014-03-22 07:37:09 +01:00
|
|
|
})
|
2014-03-31 05:47:47 +02:00
|
|
|
})
|
2014-01-11 07:57:43 +01:00
|
|
|
})
|