node-qrcode-lite/test/unit/core/numeric-data.test.js
2020-04-16 22:50:11 +01:00

54 lines
1.2 KiB
JavaScript

const test = require('tap').test
const BitBuffer = require('core/bit-buffer')
const NumericData = require('core/numeric-data')
const Mode = require('core/mode')
const testData = [
{
data: 8,
length: 1,
bitLength: 4,
dataBit: [128]
},
{
data: 16,
length: 2,
bitLength: 7,
dataBit: [32]
},
{
data: 128,
length: 3,
bitLength: 10,
dataBit: [32, 0]
},
{
data: 12345,
length: 5,
bitLength: 17,
// (123)d -> (0001111011)b 10bit
// (45)d -> (0101101)b 7bit
//
// (00011110)b -> (30)d
// (11010110)b -> (214)d
// (10000000)b -> (128)d
dataBit: [30, 214, 128]
}
]
test('Numeric Data', function (t) {
testData.forEach(function (data) {
const numericData = new NumericData(data.data)
t.equal(numericData.mode, Mode.NUMERIC, 'Mode should be NUMERIC')
t.equal(numericData.getLength(), data.length, 'Should return correct length')
t.equal(numericData.getBitsLength(), data.bitLength, 'Should return correct bit length')
const bitBuffer = new BitBuffer()
numericData.write(bitBuffer)
t.deepEqual(bitBuffer.buffer, data.dataBit, 'Should write correct data to buffer')
})
t.end()
})