将分层反馈强化版提升为正式 main,统一协作入口并移除外部构建路径
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import {feedback} from './src/feedback.mjs';
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import fs from 'node:fs';
|
||||
@@ -121,15 +122,16 @@ test('fixed channels remain anchored at their block centers after number enlarge
|
||||
test('checkpoint ribbons trigger on correct arrival only and never duplicate per frame',()=>{
|
||||
const level=pack.levels.find(l=>l.cells.some(c=>c.clue>1&&c.clue<l.cells.length)),route=solve(level)[0],n=level.cells.find(c=>c.clue>1&&c.clue<level.cells.length).clue,ctx=context();
|
||||
renderBrightBoard(ctx,level,route.slice(0,n-1),375,400,{now:1000});
|
||||
feedback.reset();const originalNow=feedback.now;feedback.now=()=>1100;feedback.emit('checkpoint',level,route[n-1],n);feedback.now=originalNow;
|
||||
let scene=renderBrightBoard(ctx,level,route.slice(0,n),375,400,{now:1100});
|
||||
assert.equal(scene.bursts.length,1);assert.equal(scene.animating,true);
|
||||
scene=renderBrightBoard(ctx,level,route.slice(0,n),375,400,{now:1200});assert.equal(scene.bursts.length,1);
|
||||
scene=renderBrightBoard(ctx,level,route.slice(0,n),375,400,{now:2800});assert.equal(scene.bursts.length,0);
|
||||
const wrong=context();renderBrightBoard(wrong,level,[],375,400,{now:1000});
|
||||
feedback.reset();const wrong=context();renderBrightBoard(wrong,level,[],375,400,{now:1000});
|
||||
scene=renderBrightBoard(wrong,level,[route[n-1]],375,400,{now:1100});assert.equal(scene.bursts.length,0);
|
||||
});
|
||||
|
||||
test('checkpoint pulse is small, centered in time and settles without looping',async()=>{
|
||||
const {checkpointScale}=await import('./src/bright-classroom/board-renderer.mjs');
|
||||
assert.equal(checkpointScale(0),1);assert.equal(checkpointScale(180),1.035);assert.equal(checkpointScale(360),1);assert.equal(checkpointScale(1000),1);assert.equal(checkpointScale(180,true),1);
|
||||
assert.equal(checkpointScale(0),1);assert.equal(checkpointScale(130),1.035);assert.equal(checkpointScale(260),1);assert.equal(checkpointScale(1000),1);assert.equal(checkpointScale(130,true),1);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user