Files
sori.studio/tests/markdown-table.test.js

51 lines
1.5 KiB
JavaScript

import assert from 'node:assert/strict'
import test from 'node:test'
import {
isMarkdownTableRow,
isMarkdownTableSeparator,
parseMarkdownTableAlignment,
parseMarkdownTableBlock,
splitMarkdownTableRow
} from '../lib/markdown-table.js'
test('마크다운 표 행과 구분선을 판별한다', () => {
assert.equal(isMarkdownTableRow('| 제목 | 값 |'), true)
assert.equal(isMarkdownTableRow('제목 | 값'), false)
assert.equal(isMarkdownTableSeparator('| --- | :---: | ---: |'), true)
assert.equal(isMarkdownTableSeparator('| 제목 | 값 |'), false)
})
test('마크다운 표 셀과 정렬 값을 파싱한다', () => {
assert.deepEqual(splitMarkdownTableRow('| A | B\\|C |'), ['A', 'B|C'])
assert.equal(parseMarkdownTableAlignment('---'), 'left')
assert.equal(parseMarkdownTableAlignment(':---:'), 'center')
assert.equal(parseMarkdownTableAlignment('---:'), 'right')
})
test('마크다운 표 블록을 메타 정보로 변환한다', () => {
assert.deepEqual(parseMarkdownTableBlock([
'| 이름 | 수량 | 비고 |',
'| :--- | ---: | :---: |',
'| 사과 | 2 | 빨강 |',
'| 배 | 10 | 노랑 |',
'',
'다음 문단'
], 0), {
headers: ['이름', '수량', '비고'],
alignments: ['left', 'right', 'center'],
rows: [
['사과', '2', '빨강'],
['배', '10', '노랑']
],
endLine: 3,
nextIndex: 4
})
})
test('구분선이 없으면 표 블록으로 처리하지 않는다', () => {
assert.equal(parseMarkdownTableBlock([
'| 이름 | 수량 |',
'| 사과 | 2 |'
], 0), null)
})