38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
||
import {
|
||
getPoiDisplayPolicy,
|
||
isPoiVisibilityTierAtLeast
|
||
} from '@/domain/poiDisplay'
|
||
|
||
describe('POI 显示策略', () => {
|
||
it('空间点位初始总览保留 marker,但不进入环境标签层', () => {
|
||
const policy = getPoiDisplayPolicy({
|
||
primaryCategory: 'space_public_area',
|
||
kind: 'space'
|
||
})
|
||
|
||
expect(policy.labelVisible).toBe(false)
|
||
expect(policy.minMarkerTier).toBe('tight')
|
||
expect(policy.allowOverview).toBe(true)
|
||
expect(policy.allowMulti).toBe(true)
|
||
expect(policy.minLabelTier).toBe('full')
|
||
})
|
||
|
||
it('展厅和服务设施拥有不同优先级与标签密度策略', () => {
|
||
const hall = getPoiDisplayPolicy({ primaryCategory: 'exhibition_hall', kind: 'hall' })
|
||
const service = getPoiDisplayPolicy({ primaryCategory: 'business_poi', kind: 'facility' })
|
||
|
||
expect(hall.labelVisible).toBe(true)
|
||
expect(hall.minLabelTier).toBe('tight')
|
||
expect(hall.priority).toBeGreaterThan(service.priority)
|
||
expect(service.minLabelTier).toBe('full')
|
||
})
|
||
|
||
it('LOD tier 按 tight 到 full 单调放宽', () => {
|
||
expect(isPoiVisibilityTierAtLeast('tight', 'tight')).toBe(true)
|
||
expect(isPoiVisibilityTierAtLeast('balanced', 'tight')).toBe(true)
|
||
expect(isPoiVisibilityTierAtLeast('balanced', 'full')).toBe(false)
|
||
expect(isPoiVisibilityTierAtLeast('full', 'balanced')).toBe(true)
|
||
})
|
||
})
|