mirror of
https://github.com/motajs/template.git
synced 2026-10-09 14:00:18 +08:00
test(08-07): align path performance tests and clear prettier gate
- performance.test.ts: drop finder/builder useMapState, inject Dir4FaceHandler, read IPathfindingResult.path length; size matrix and thresholds unchanged - graph.test.ts: prettier-format injected-fixture helpers - path focused run 28/28, eslint 0
This commit is contained in:
parent
b62b394ee9
commit
ba92f5291b
@ -282,11 +282,7 @@ function createFixture(
|
||||
describe('pathfinding graph building', () => {
|
||||
// 验证仅注入方向处理器而未注入谓词时,构建入口告警缺失谓词守卫码 173 并返回 null
|
||||
it('warns the missing-predicate guard code and returns null without a predicate', () => {
|
||||
const { builder } = createFixture(
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
3,
|
||||
null
|
||||
);
|
||||
const { builder } = createFixture([1, 1, 1, 1, 1, 1, 1, 1, 1], 3, null);
|
||||
const result = modules.logger.catch(() =>
|
||||
builder.build({ x: 1, y: 1 })
|
||||
);
|
||||
|
||||
@ -39,8 +39,8 @@ interface TestModules {
|
||||
TileStore: typeof import('@user/data-common').TileStore;
|
||||
ObjectMover: typeof import('@user/data-common').ObjectMover;
|
||||
FaceManager: typeof import('@user/data-common').FaceManager;
|
||||
Dir4FaceHandler: typeof import('@user/data-common').Dir4FaceHandler;
|
||||
Dir8FaceHandler: typeof import('@user/data-common').Dir8FaceHandler;
|
||||
DirectionMapper: typeof import('@motajs/common').DirectionMapper;
|
||||
RoleFaceBinder: typeof import('@user/data-common').RoleFaceBinder;
|
||||
}
|
||||
|
||||
@ -52,16 +52,15 @@ beforeAll(async () => {
|
||||
const systemModule = await import('../system');
|
||||
const baseModule = await import('@user/data-base');
|
||||
const commonModule = await import('@user/data-common');
|
||||
const motaModule = await import('@motajs/common');
|
||||
modules = {
|
||||
PathfindingSystem: systemModule.PathfindingSystem,
|
||||
MapState: baseModule.MapState,
|
||||
TileStore: commonModule.TileStore,
|
||||
ObjectMover: commonModule.ObjectMover,
|
||||
FaceManager: commonModule.FaceManager,
|
||||
Dir4FaceHandler: commonModule.Dir4FaceHandler,
|
||||
Dir8FaceHandler: commonModule.Dir8FaceHandler,
|
||||
RoleFaceBinder: commonModule.RoleFaceBinder,
|
||||
DirectionMapper: motaModule.DirectionMapper
|
||||
RoleFaceBinder: commonModule.RoleFaceBinder
|
||||
};
|
||||
});
|
||||
|
||||
@ -292,10 +291,9 @@ function createPerformanceSystem(
|
||||
eventStore: {},
|
||||
roleFace: new modules.RoleFaceBinder(),
|
||||
faceManager,
|
||||
directionMapper: new modules.DirectionMapper(),
|
||||
saveSystem: {}
|
||||
} as never;
|
||||
const maps = new modules.MapState(tileStore, commonState);
|
||||
const maps = new modules.MapState(commonState);
|
||||
const map = maps.fromRaw({
|
||||
floorId: 'PERF',
|
||||
width,
|
||||
@ -303,7 +301,7 @@ function createPerformanceSystem(
|
||||
layerAlias: { 0: 'event' },
|
||||
events: { 0: {} }
|
||||
})!;
|
||||
const layer = map.getLayerByAlias('event')!;
|
||||
const layer = map.eventLayer!;
|
||||
const predicate = new FixturePredicate(map, new modules.Dir8FaceHandler());
|
||||
|
||||
class PerfMover
|
||||
@ -358,15 +356,15 @@ function createPerformanceSystem(
|
||||
commonState as never
|
||||
);
|
||||
system.useMover(tile.mover);
|
||||
system.finder.useMapState(maps);
|
||||
system.finder.useMapLayer(layer);
|
||||
system.finder.useFaceHandler(new modules.Dir4FaceHandler());
|
||||
system.finder.usePassPredicate(predicate);
|
||||
return {
|
||||
system,
|
||||
buildGraph: (): ReturnType<MapGraphBuilder['build']> => {
|
||||
const builder = new MapGraphBuilder();
|
||||
builder.useMapState(maps);
|
||||
builder.useMapLayer(layer);
|
||||
builder.useFaceHandler(new modules.Dir4FaceHandler());
|
||||
builder.usePassPredicate(predicate);
|
||||
return builder.build(start);
|
||||
}
|
||||
@ -550,10 +548,10 @@ describe('pathfinding performance', () => {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(
|
||||
`[pathfinding-perf] map=${size}x${size} ` +
|
||||
`steps=${steps.length} elapsed=${elapsed.toFixed(2)}ms`
|
||||
`steps=${steps.path.length} elapsed=${elapsed.toFixed(2)}ms`
|
||||
);
|
||||
|
||||
expect(steps.length).toBeGreaterThan(0);
|
||||
expect(steps.path.length).toBeGreaterThan(0);
|
||||
expect(elapsed).toBeLessThan(sanityLimit(size));
|
||||
}
|
||||
});
|
||||
@ -580,7 +578,7 @@ describe('pathfinding performance', () => {
|
||||
fixture.system.getPath(target)
|
||||
);
|
||||
findTimes.push(find.duration);
|
||||
steps = find.value.length;
|
||||
steps = find.value.path.length;
|
||||
}
|
||||
|
||||
// 审查要求输出结构化分段性能数据供汇报使用
|
||||
@ -635,7 +633,7 @@ describe('pathfinding performance', () => {
|
||||
fixture.system.getPath(endpoints.target)
|
||||
);
|
||||
findTimes.push(find.duration);
|
||||
steps = find.value.length;
|
||||
steps = find.value.path.length;
|
||||
}
|
||||
|
||||
const searchAvg =
|
||||
|
||||
Loading…
Reference in New Issue
Block a user