37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { splitMultiTextUnits } from '../src/multiTextParser';
|
|
|
|
describe('multiTextParser', () => {
|
|
it('应按布局比例分配角度', () => {
|
|
const units = splitMultiTextUnits('甲乙|子|丙丁', 0, 120);
|
|
expect(units).toHaveLength(3);
|
|
expect(units[0].aStart).toBe(0);
|
|
expect(units[0].aEnd).toBe(30);
|
|
expect(units[1].aStart).toBe(30);
|
|
expect(units[1].aEnd).toBe(90);
|
|
expect(units[2].aStart).toBe(90);
|
|
expect(units[2].aEnd).toBe(120);
|
|
});
|
|
|
|
it('应识别 SVG 文件并拼接路径', () => {
|
|
const units = splitMultiTextUnits('a.svg|b', 0, 60, 'src/assets/icons');
|
|
expect(units[0].isSvg).toBe(true);
|
|
expect(units[0].svgPath).toBe('src/assets/icons/a.svg');
|
|
expect(units[1].isSvg).toBe(false);
|
|
});
|
|
|
|
it('应支持自定义 unitRatios', () => {
|
|
const units = splitMultiTextUnits('甲|乙|丙', 0, 100, 'src/assets/icons', [0.2, 0.3, 0.5]);
|
|
expect(units[0].aStart).toBe(0);
|
|
expect(units[0].aEnd).toBe(20);
|
|
expect(units[1].aStart).toBe(20);
|
|
expect(units[1].aEnd).toBe(50);
|
|
expect(units[2].aStart).toBe(50);
|
|
expect(units[2].aEnd).toBe(100);
|
|
});
|
|
|
|
it('空内容应返回空数组', () => {
|
|
expect(splitMultiTextUnits('', 0, 60)).toEqual([]);
|
|
});
|
|
});
|