peakon_action_plan/node_modules/@foliojs-fork/linebreak/test/index.js
2025-08-30 13:27:49 -05:00

48 lines
1.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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));
});
});