update at 2026-01-22 18:43:01
This commit is contained in:
53
tests/colorResolver.test.ts
Normal file
53
tests/colorResolver.test.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
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');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user