update at 2026-01-23 23:20:39
This commit is contained in:
@@ -27,6 +27,16 @@ describe('colorResolver', () => {
|
||||
expect(map.has(5)).toBe(false);
|
||||
});
|
||||
|
||||
it('applyPatternColoring 应支持规律填色偏移', () => {
|
||||
const map = applyPatternColoring(6, '#111111', 2, 1, 2);
|
||||
expect(map.has(0)).toBe(false);
|
||||
expect(map.has(1)).toBe(true);
|
||||
expect(map.has(2)).toBe(true);
|
||||
expect(map.has(3)).toBe(false);
|
||||
expect(map.has(4)).toBe(true);
|
||||
expect(map.has(5)).toBe(true);
|
||||
});
|
||||
|
||||
it('resolveLayerColors 在提供 colorRef 且无 num 时覆盖全部扇区', () => {
|
||||
const resolver = new ColorResolver(theme, '#000000');
|
||||
const layer: SectorLayerConfig = {
|
||||
|
||||
@@ -22,13 +22,14 @@ describe('configParser', () => {
|
||||
|
||||
expect(config.name).toBe('demo');
|
||||
expect(config.layers.length).toBeGreaterThan(0);
|
||||
expect(config.theme.colorPalettes['木']).toBe('#43A047');
|
||||
expect(config.themeRef).toBe('五行配色主题');
|
||||
expect(config.theme).toBeUndefined();
|
||||
expect(config.layers.some((layer) => layer.type === 'centerIcon')).toBe(true);
|
||||
expect(config.layers.some((layer) => layer.type === 'degreeRing')).toBe(true);
|
||||
});
|
||||
|
||||
it('缺少必填字段时应抛错', () => {
|
||||
const raw = '{ "background": "#000", "theme": { "colorPalettes": {} }, "layers": [] }';
|
||||
const raw = '{ "background": "#000", "layers": [] }';
|
||||
expect(() => parseConfig(raw)).toThrow('name 为必填字符串');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -20,6 +20,16 @@ describe('multiTextParser', () => {
|
||||
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([]);
|
||||
});
|
||||
|
||||
@@ -61,6 +61,25 @@ describe('sectorBuilder', () => {
|
||||
expect(sectors[2].groupSplitVisible).toBe(true);
|
||||
});
|
||||
|
||||
it('groupSplit=false 时应受 patternOffset 影响', () => {
|
||||
const resolver = new ColorResolver(theme, '#000000');
|
||||
const builder = new SectorBuilder(resolver);
|
||||
const baseLayer: SectorLayerConfig = {
|
||||
divisions: 4,
|
||||
rInner: 0,
|
||||
rOuter: 10,
|
||||
num: 2,
|
||||
interval: 1,
|
||||
groupSplit: false,
|
||||
};
|
||||
|
||||
const baseSectors = builder.buildLayer(baseLayer, 0);
|
||||
const offsetSectors = builder.buildLayer({ ...baseLayer, patternOffset: 2 }, 0);
|
||||
|
||||
expect(baseSectors[1].groupSplitVisible).toBe(false);
|
||||
expect(offsetSectors[2].groupSplitVisible).toBe(false);
|
||||
});
|
||||
|
||||
it('应生成多文本单元并按角度分配', () => {
|
||||
const resolver = new ColorResolver(theme, '#000000');
|
||||
const builder = new SectorBuilder(resolver);
|
||||
|
||||
@@ -135,7 +135,7 @@ describe('annularSectorPath', () => {
|
||||
|
||||
it('应该在大角度时设置 large-arc-flag', () => {
|
||||
const path = annularSectorPath(50, 100, 0, 270);
|
||||
// 大角度应包含 large-arc-flag = 1
|
||||
// 大角度应包含 `large-arc-flag` = 1
|
||||
expect(path).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user