54 lines
1.9 KiB
TypeScript
54 lines
1.9 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { ColorResolver, applyPatternColoring } from '../src/colorResolver';
|
|
import type { ThemeConfig, SectorLayerConfig, SectorConfig } from '../src/types';
|
|
|
|
describe('colorResolver', () => {
|
|
const theme: ThemeConfig = {
|
|
colorPalettes: {
|
|
木: '#43A047',
|
|
火: '#E53935',
|
|
},
|
|
};
|
|
|
|
it('resolveColor 应解析命名色并支持十六进制', () => {
|
|
const resolver = new ColorResolver(theme, '#000000');
|
|
expect(resolver.resolveColor('木')).toBe('#43A047');
|
|
expect(resolver.resolveColor('#ffffff')).toBe('#ffffff');
|
|
expect(resolver.resolveColor('不存在')).toBe('#000000');
|
|
});
|
|
|
|
it('applyPatternColoring 应按 num + interval 生成映射', () => {
|
|
const map = applyPatternColoring(6, '#111111', 2, 1);
|
|
expect(map.has(0)).toBe(true);
|
|
expect(map.has(1)).toBe(true);
|
|
expect(map.has(2)).toBe(false);
|
|
expect(map.has(3)).toBe(true);
|
|
expect(map.has(4)).toBe(true);
|
|
expect(map.has(5)).toBe(false);
|
|
});
|
|
|
|
it('resolveLayerColors 仅在提供 colorRef 与 num 时生效', () => {
|
|
const resolver = new ColorResolver(theme, '#000000');
|
|
const layer: SectorLayerConfig = {
|
|
divisions: 4,
|
|
rInner: 0,
|
|
rOuter: 10,
|
|
colorRef: '火',
|
|
num: 2,
|
|
interval: 1,
|
|
};
|
|
const map = resolver.resolveLayerColors(layer);
|
|
expect(map.size).toBe(3);
|
|
});
|
|
|
|
it('resolveSectorColor 应遵循 sector > layer > background 优先级', () => {
|
|
const resolver = new ColorResolver(theme, '#000000');
|
|
const layerMap = new Map<number, string>([[1, '#E53935']]);
|
|
const sector: SectorConfig = { content: 'x', colorRef: '木' };
|
|
|
|
expect(resolver.resolveSectorColor(layerMap, sector, 1)).toBe('#43A047');
|
|
expect(resolver.resolveSectorColor(layerMap, undefined, 1)).toBe('#E53935');
|
|
expect(resolver.resolveSectorColor(layerMap, undefined, 2)).toBe('#000000');
|
|
});
|
|
});
|