pdf-to-markdown/test/support/PageFactorFinder.test.ts
2024-03-26 10:52:54 -06:00

131 lines
3.7 KiB
TypeScript

import PageFactorFinder from 'src/support/PageFactorFinder';
interface Container {
index: number;
numbers: number[];
}
const extractor = (container: Container) => container;
test('distraction free - straight', () => {
const finder = new PageFactorFinder();
const containers: Container[] = [
{ index: 0, numbers: [1] },
{ index: 1, numbers: [2] },
{ index: 2, numbers: [3] },
{ index: 3, numbers: [4] },
{ index: 4, numbers: [5] },
{ index: 5, numbers: [6] },
];
expect(finder.find(containers, extractor)).toEqual(1);
});
test('distraction free - accept gap in numbers', () => {
const finder = new PageFactorFinder();
const containers: Container[] = [
{ index: 0, numbers: [1] },
{ index: 1, numbers: [2] },
{ index: 2, numbers: [3] },
{ index: 3, numbers: [4] },
{ index: 4, numbers: [] },
{ index: 5, numbers: [6] },
];
expect(finder.find(containers, extractor)).toEqual(1);
});
test('distraction free - accept gap in pages', () => {
const finder = new PageFactorFinder();
const containers: Container[] = [
{ index: 0, numbers: [1] },
{ index: 1, numbers: [2] },
{ index: 2, numbers: [3] },
{ index: 3, numbers: [4] },
{ index: 5, numbers: [6] },
];
expect(finder.find(containers, extractor)).toEqual(1);
});
test('distraction free - defered', () => {
const finder = new PageFactorFinder();
const containers: Container[] = [
{ index: 0, numbers: [2006] },
{ index: 1, numbers: [] },
{ index: 2, numbers: [1, 1] },
{ index: 3, numbers: [2] },
{ index: 4, numbers: [3] },
{ index: 5, numbers: [4] },
{ index: 6, numbers: [5] },
{ index: 7, numbers: [6] },
{ index: 8, numbers: [7] },
{ index: 9, numbers: [8] },
];
expect(finder.find(containers, extractor)).toEqual(-1);
});
test('distraction loaden - straight', () => {
const finder = new PageFactorFinder();
const containers: Container[] = [
{ index: 0, numbers: [1, -3453] },
{ index: 1, numbers: [2, 355] },
{ index: 2, numbers: [3, 950, 4] },
{ index: 3, numbers: [4, 534, 5] },
{ index: 4, numbers: [5, 6] },
{ index: 5, numbers: [6, 35335] },
];
expect(finder.find(containers, extractor)).toEqual(1);
});
test('distraction loaden - defered', () => {
const finder = new PageFactorFinder();
const containers: Container[] = [
{ index: 0, numbers: [2006] },
{ index: 1, numbers: [5] },
{ index: 2, numbers: [1, 7678] },
{ index: 3, numbers: [2, 2] },
{ index: 4, numbers: [3, 4] },
{ index: 5, numbers: [4, 5, 65, 8] },
{ index: 6, numbers: [5, 9] },
{ index: 7, numbers: [6] },
{ index: 8, numbers: [27, 7, 19] },
{ index: 9, numbers: [-4, 2016, 8] },
];
expect(finder.find(containers, extractor)).toEqual(-1);
});
test('many numbers but no meaningful match', () => {
const finder = new PageFactorFinder();
const containers: Container[] = [
{ index: 0, numbers: [3] },
{ index: 1, numbers: [7] },
{ index: 2, numbers: [4] },
{ index: 3, numbers: [6, 5] },
{ index: 4, numbers: [13, 9] },
{ index: 5, numbers: [8, 7] },
{ index: 6, numbers: [11] },
{ index: 7, numbers: [1] },
];
expect(finder.find(containers, extractor)).toBeUndefined();
});
test('many numbers but no match', () => {
const finder = new PageFactorFinder();
const containers: Container[] = [
{ index: 0, numbers: [22] },
{ index: 1, numbers: [7] },
{ index: 2, numbers: [14] },
{ index: 3, numbers: [1, 5] },
{ index: 4, numbers: [13, 9] },
{ index: 5, numbers: [8, 787] },
{ index: 6, numbers: [12] },
{ index: 7, numbers: [1] },
];
expect(finder.find(containers, extractor)).toBeUndefined();
});