Repository navigation
Expand file tree
/
Copy pathkernel-progress.test.mjs
More file actions
47 lines (37 loc) · 1.99 KB
/
Copy pathkernel-progress.test.mjs
File metadata and controls
47 lines (37 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import assert from 'node:assert/strict';
import test from 'node:test';
import { createKernelProgressParser } from '../../shared/translation/kernel-progress.mjs';
test('kernel progress parser preserves stages without a measurable percentage', () => {
const progress = [];
const consume = createKernelProgressParser((value) => progress.push(value));
consume('PDFMATH_PROGRESS:{"stage":"Finalize PDF","completed":0,"total":1,"percent":null}\n');
assert.deepEqual(progress, [{ stage: 'Finalize PDF', completed: 0, total: 1, percent: null }]);
});
test('kernel progress parser joins split stdout chunks and ignores ordinary output', () => {
const progress = [];
const consume = createKernelProgressParser((value) => progress.push(value));
consume('worker output\nPDFMATH_PROGRESS:{"stage":"pages","completed":');
consume('2,"total":4,"percent":50}\r\nother output\n');
assert.deepEqual(progress, [{ stage: 'pages', completed: 2, total: 4, percent: 50 }]);
});
test('kernel progress parser drops malformed records and out-of-bounds values', () => {
const progress = [];
const consume = createKernelProgressParser((value) => progress.push(value));
consume(
[
'PDFMATH_PROGRESS:not-json',
'PDFMATH_PROGRESS:{"stage":"pages","completed":-1,"total":4,"percent":0}',
'PDFMATH_PROGRESS:{"stage":"pages","completed":5,"total":4,"percent":125}',
'PDFMATH_PROGRESS:{"stage":"pages","completed":1,"total":0,"percent":0}',
'PDFMATH_PROGRESS:{"stage":"pages","completed":1,"total":4,"percent":25}',
].join('\n') + '\n',
);
assert.deepEqual(progress, [{ stage: 'pages', completed: 1, total: 4, percent: 25 }]);
});
test('kernel progress parser accepts native fractional percent within bounds', () => {
const progress = [];
const consume = createKernelProgressParser((value) => progress.push(value));
consume('PDFMATH_PROGRESS:{"stage":"typeset","completed":3,"total":7,"percent":42.857}\n');
assert.equal(progress.length, 1);
assert.equal(progress[0].percent, 42.857);
});