Eliminate the smartSentenceSplitting configuration flag from application state, UI, and all TTS and audiobook adapter logic. Consolidate TTS segment planning to always include context units, streamlining code and reducing conditional branches. Update tests and type definitions to reflect the removal of this feature toggle.
51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
|
|
import type { CanonicalTtsSourceUnit } from '../../src/lib/shared/tts-segment-plan';
|
|
import {
|
|
buildWalkerPlanningSourceUnits,
|
|
selectUpcomingWalkerItems,
|
|
} from '../../src/lib/client/epub/tts-epub-preload';
|
|
|
|
test.describe('EPUB walker preload helpers', () => {
|
|
test('selectUpcomingWalkerItems honors depth as current + (depth-1) upcoming', () => {
|
|
const items = [
|
|
{ cfi: 'epubcfi(/6/2[;s=a]!/4/2)' }, // same as current after normalization
|
|
{ cfi: 'epubcfi(/6/4!/4/2)' },
|
|
{ cfi: 'epubcfi(/6/6!/4/2)' },
|
|
{ cfi: 'epubcfi(/6/8!/4/2)' },
|
|
];
|
|
|
|
const selected = selectUpcomingWalkerItems(items, 'epubcfi(/6/2!/4/2)', 2);
|
|
expect(selected.map((item) => item.cfi)).toEqual([
|
|
'epubcfi(/6/4!/4/2)',
|
|
]);
|
|
});
|
|
|
|
test('selectUpcomingWalkerItems returns empty list when depth <= 1', () => {
|
|
const items = [
|
|
{ cfi: 'epubcfi(/6/4!/4/2)' },
|
|
{ cfi: 'epubcfi(/6/6!/4/2)' },
|
|
];
|
|
expect(selectUpcomingWalkerItems(items, 'epubcfi(/6/2!/4/2)', 1)).toEqual([]);
|
|
expect(selectUpcomingWalkerItems(items, 'epubcfi(/6/2!/4/2)', 0)).toEqual([]);
|
|
});
|
|
|
|
test('buildWalkerPlanningSourceUnits includes live context', () => {
|
|
const contextUnits: CanonicalTtsSourceUnit[] = [
|
|
{ sourceKey: 'previous:page-a', text: 'prev sentence', locator: null },
|
|
{ sourceKey: 'page-a', text: 'current sentence', locator: { readerType: 'epub', location: 'page-a' } },
|
|
];
|
|
const upcomingUnits: CanonicalTtsSourceUnit[] = [
|
|
{ sourceKey: 'page-b', text: 'upcoming one', locator: { readerType: 'epub', location: 'page-b' } },
|
|
{ sourceKey: 'page-c', text: 'upcoming two', locator: { readerType: 'epub', location: 'page-c' } },
|
|
];
|
|
|
|
const planned = buildWalkerPlanningSourceUnits(contextUnits, upcomingUnits);
|
|
expect(planned.map((item) => item.sourceKey)).toEqual([
|
|
'previous:page-a',
|
|
'page-a',
|
|
'page-b',
|
|
'page-c',
|
|
]);
|
|
});
|
|
});
|