feat: 阶段1-3 桌面编辑器(Tauri 骨架/编辑核心深化/复杂内容)
This commit is contained in:
39
tests/text.test.ts
Normal file
39
tests/text.test.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { describe, it, expect } from 'vitest'
|
||||
import { countWords, countChars, extractOutline, baseName, isMarkdownPath } from '../src/utils/text'
|
||||
|
||||
describe('字数统计', () => {
|
||||
it('中文按字、英文按词、标点不计', () => {
|
||||
expect(countWords('你好,世界!')).toBe(4)
|
||||
expect(countWords('hello world, again')).toBe(3)
|
||||
expect(countWords('中文 mixed 文本 test')).toBe(2 + 1 + 2 + 1)
|
||||
})
|
||||
it('代码块可排除', () => {
|
||||
const md = '正文一二\n\n```\ncode code code\n```\n'
|
||||
expect(countWords(md, true)).toBe(4 + 3)
|
||||
expect(countWords(md, false)).toBe(4)
|
||||
})
|
||||
it('字符数按 Unicode 码点计', () => {
|
||||
expect(countChars('a你好b')).toBe(4)
|
||||
})
|
||||
})
|
||||
|
||||
describe('大纲提取', () => {
|
||||
it('提取层级与行号,跳过代码块内的 # 行', () => {
|
||||
const md = '# 一级\n\n```\n# 不是标题\n```\n\n## 二级\n正文\n### 三级\n'
|
||||
const outline = extractOutline(md)
|
||||
expect(outline.map((o) => o.text)).toEqual(['一级', '二级', '三级'])
|
||||
expect(outline.map((o) => o.level)).toEqual([1, 2, 3])
|
||||
expect(outline[1].line).toBe(6)
|
||||
})
|
||||
})
|
||||
|
||||
describe('路径工具', () => {
|
||||
it('Windows 路径取文件名', () => {
|
||||
expect(baseName('C:\\docs\\笔记\\a.md')).toBe('a.md')
|
||||
expect(baseName('/home/x/b.md')).toBe('b.md')
|
||||
})
|
||||
it('Markdown 路径判定', () => {
|
||||
expect(isMarkdownPath('a.MD')).toBe(true)
|
||||
expect(isMarkdownPath('a.txt')).toBe(false)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user