Skip to content

Commit c92f199

Browse files
committed
test(layers): characterize LayerPickService delegate (stage-6 6.1)
阶段 6.1:为阶段 1.3a LayerPickService(BaseLayerPickService,14 个 delegate 中依赖面最重的集成协调器)补独立特征化 spec (pick-service.spec.ts 17 cases),此前仅经 tile interaction utils / PickingService / PixelPickingPass 间接覆盖。以满足窄依赖面的 mock layer(container + hooks + renderModels + getSource/getOriginalExtent + tileLayer + mapService.lngLatToContainer)直连 delegate。 pickRender:tileLayer 存在委托 pickRender 短路(不调自身编码);非 tile 走 beforePickingEncode + renderTileLayerMask + renderModels({ispick}) + afterPickingEncode 编码序列。pick(layer,target):RasterLayer 走 pickRasterLayer,否则 pickRender + pickFromPickingFBO 透传。 pickRasterLayer:extent 解析(originalExtent[0]/[2] 非零用之否则 getSource().extent)+ lngLatInExtent 分流;isPick=true→readRasterValue+ 单次 triggerHoverOnLayer+return true;isPick=false 重定义 type (mousemove→mouseout 否则 un+type)+ 两次 triggerHoverOnLayer (unpick + retyped)+ return false;parent 用作 adviceTarget。 readRasterValue 3 case 锁定几何索引计算(pos 归一 + indexX/Y floor + max(0,indexY-1) 兜底 + 解构默认 maxLng=10/maxLat=-10)。 selectFeature/highlightPickedFeature 解构 [r,g,b] + hooks 调用; getFeatureById 透传。lngLatInExtent 边界左开右闭锁定(真实纯函数)。 纯测试刀:仅改 __tests__/ + docs/PLAN,不进发布包,零产线改动、 零 changeset。验证:eslint 0 problems、prettier 通过、新 spec 17 passed、 非 GL 回归子集 25 suites/158 passed 与基线一致。
1 parent 1f9fe6d commit c92f199

2 files changed

Lines changed: 426 additions & 1 deletion

File tree

docs/refactoring/layers/PLAN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ citybuilding/ geometry/ — 12 个具体图层 extends BaseLayer(各自只 ove
112112
### 阶段 6 — 测试 & 文档(持续)
113113

114114
- 6.1 为每个 delegate(1.1–1.9)补独立 spec(mock container + 插件),不再仅靠子类间接覆盖。
115-
- 进度:LayerConfigModel(`config-tracks.spec`)✅ / LayerRelativeCoords(1.4 `relative-coords.spec`)✅ / LayerAnimateState(1.5 `animate-state.spec`)✅ / LayerVisibilityZoom(1.8 `visibility-zoom.spec`)✅ / LayerScaleLegend(1.6 `scale-legend.spec`)✅ / LayerMaskManager(1.7 `mask-manager.spec`)✅ / LayerPickingManager(1.3b `picking-manager.spec`)✅ / encodeStyles(3.3 `encode-styles.spec`)✅。剩 LayerPickService(1.3a)/TextureService(1.6/1.7) 待补。
115+
- 进度:LayerConfigModel(`config-tracks.spec`)✅ / LayerRelativeCoords(1.4 `relative-coords.spec`)✅ / LayerAnimateState(1.5 `animate-state.spec`)✅ / LayerVisibilityZoom(1.8 `visibility-zoom.spec`)✅ / LayerScaleLegend(1.6 `scale-legend.spec`)✅ / LayerMaskManager(1.7 `mask-manager.spec`)✅ / LayerPickingManager(1.3b `picking-manager.spec`)✅ / LayerPickService(1.3a `pick-service.spec`)✅ / encodeStyles(3.3 `encode-styles.spec`)✅。剩 TextureService(1.6/1.7) 待补。
116116
- 6.2 交互编码开关(`enableShaderEncodeStyles/enableDataEncodeStyles`)补 spec,锁定 shader/data 编码分流。
117117
- 6.3 ✅ 相对坐标、animate 状态机补纯单测:为阶段 1.4 `LayerRelativeCoords` 与 1.5 `LayerAnimateState` 两个 delegate 补独立特征化 spec(`__tests__/core/relative-coords.spec.ts` 8 cases + `animate-state.spec.ts` 9 cases),以满足窄依赖面的 mock layer 直连 delegate,锁定 guard/默认初值/wiring/快照时序/control flow/时钟透传/副作用等可观测契约;此前仅经 BaseLayer 子类渲染路径间接覆盖。纯测试刀,零产线改动。
118118
- 6.4 `BaseLayer` 的 delegate 转发用「接口契约 spec」模式(类似 maps `base-map-event.spec.ts`)锁定对外透明。

0 commit comments

Comments
 (0)