var test = require('tap').test var Utils = require('core/utils') var Version = require('core/version') var ECLevel = require('core/error-correction-level') var ECCode = require('core/error-correction-code') var ByteData = require('core/byte-data') test('Error correction codewords', function (t) { var levels = [ECLevel.L, ECLevel.M, ECLevel.Q, ECLevel.H] for (var v = 1; v <= 40; v++) { var totalCodewords = Utils.getSymbolTotalCodewords(v) var reservedByte = Math.ceil((ByteData.getCharCountIndicator(v) + 4) / 8) for (var l = 0; l < levels.length; l++) { var dataCodewords = Version.getCapacity(v, levels[l]) + reservedByte var expectedCodewords = totalCodewords - dataCodewords t.equal(ECCode.getTotalCodewordsCount(v, levels[l]), expectedCodewords, 'Should return correct codewords number') } } t.equal(ECCode.getTotalCodewordsCount(1), undefined, 'Should return undefined if EC level is not specified') t.end() }) test('Error correction blocks', function (t) { var levels = [ECLevel.L, ECLevel.M, ECLevel.Q, ECLevel.H] for (var v = 1; v <= 40; v++) { for (var l = 0; l < levels.length; l++) { t.ok(ECCode.getBlocksCount(v, levels[l]), 'Should return a positive number') } } t.equal(ECCode.getBlocksCount(1), undefined, 'Should return undefined if EC level is not specified') t.end() })