import assert from 'node:assert/strict' import test from 'node:test' import { createEditorHistoryEntry, getEditorHistoryEntrySelection, getEditorHistoryEntryValue } from '../lib/markdown-editor-history.js' test('히스토리 항목은 본문 길이 안으로 선택 범위를 보정한다', () => { assert.deepEqual(createEditorHistoryEntry('본문', { start: -10, end: 99 }), { value: '본문', selectionStart: 0, selectionEnd: 2 }) }) test('히스토리 항목은 유효하지 않은 선택 값을 0으로 처리한다', () => { assert.deepEqual(createEditorHistoryEntry('abc', { start: Number.NaN, end: Infinity }), { value: 'abc', selectionStart: 0, selectionEnd: 0 }) }) test('문자열 히스토리 항목은 레거시 본문 값으로 읽는다', () => { assert.equal(getEditorHistoryEntryValue('legacy'), 'legacy') assert.equal(getEditorHistoryEntrySelection('legacy', 'legacy'), null) }) test('객체 히스토리 항목의 본문과 선택 위치를 읽는다', () => { const entry = { value: 'abcdef', selectionStart: 2, selectionEnd: 4 } assert.equal(getEditorHistoryEntryValue(entry), 'abcdef') assert.deepEqual(getEditorHistoryEntrySelection(entry, 'abcdef'), { start: 2, end: 4 }) }) test('복원 선택 위치는 복원된 본문 길이 안으로 보정한다', () => { assert.deepEqual(getEditorHistoryEntrySelection({ value: 'abcdef', selectionStart: 2, selectionEnd: 99 }, 'abc'), { start: 2, end: 3 }) })