import { parseText, _privates } from '../src/textProcessing/parseText.js' const { splitLongWord } = _privates describe('parseText', function() { it('returns an object with expected properties', function() { let parsed = parseText('Hello World. Test Sentence.') expect(parsed.segments).toEqual(['Hello', 'World.', 'Test', 'Sentence.']) expect(parsed.words).toEqual([0, 1, 2, 3]) expect(parsed.sentences).toEqual([0, 2]) }) }) describe('splitLongWord', function() { it('returns an array', function() { expect(Array.isArray(splitLongWord('asdf'))).toBeTruthy() }) it('returns the single word by default', function() { expect(splitLongWord('asdf')).toEqual(['asdf']) }) it('returns small words unmodified', function() { expect(splitLongWord('asdf', 5)).toEqual(['asdf']) expect(splitLongWord('asdf', 4)).toEqual(['asdf']) }) it('splits long words', function() { expect(splitLongWord('asdf', 3)).toEqual(['as', 'df']) }) it('split into even parts', function() { expect(splitLongWord('1234567890', 9)).toEqual(['12345', '67890']) }) it('corner case: uneven length', function() { expect(splitLongWord('123456789', 8)).toEqual(['1234', '56789']) }) it('corner case: multiple uneven parts', function() { let word = '1234567890123' let segments = splitLongWord(word, 3) expect(segments.reduce((x, y) => x + y, '')).toBe(word) expect(Math.max(...segments.map(seg => seg.length))).toBe(3) expect(Math.min(...segments.map(seg => seg.length))) }) })