
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
const fs = require('fs');
const LineBreaker = require('../');
const assert = require('assert');
describe('unicode line break tests', function () {
// these tests are weird, possibly incorrect or just tailored differently. we skip them.
const skip = [
125, 127, 815, 1161, 1163, 1165, 1167, 1331, 2189, 2191, 2873, 2875, 3567, 3739, 4081, 4083,
4425, 4427, 4473, 4475, 4597, 4599, 4645, 4647, 4943, 5109, 5111, 5459, 6149, 6151, 6153, 6155,
6489, 6491, 6663, 6833, 6835, 7005, 7007, 7177, 7179, 7477, 7486, 7491, 7576, 7577, 7578, 7579,
7580, 7581, 7583, 7584, 7585, 7586, 7587, 7604, 7610, 7611
];
const data = fs.readFileSync(__dirname + '/LineBreakTest.txt', 'utf8');
const lines = data.split('\n');
return lines.forEach(function (line, i) {
let rowNumber = i + 1;
let bk;
if (!line || /^#/.test(line)) { return; }
const [cols, comment] = line.split('#');
const codePoints = cols.split(/\s*[×÷]\s*/).slice(1, -1).map(c => parseInt(c, 16));
const str = String.fromCodePoint(...codePoints);
const breaker = new LineBreaker(str);
const breaks = [];
let last = 0;
while (bk = breaker.nextBreak()) {
breaks.push(str.slice(last, bk.position));
last = bk.position;
}
const expected = cols.split(/\s*÷\s*/).slice(0, -1).map(function (c) {
let codes = c.split(/\s*×\s*/);
if (codes[0] === '') { codes.shift(); }
codes = codes.map(c => parseInt(c, 16));
return String.fromCodePoint(...codes);
});
if (skip.includes(rowNumber)) {
it.skip(cols, function () { });
return;
}
it(cols, () => assert.deepStrictEqual(breaks, expected, rowNumber + ' ' + JSON.stringify(breaks) + ' != ' + JSON.stringify(expected) + ' #' + comment));
});
});