d
This commit is contained in:
parent
c3a6f5ff37
commit
4c4e767ec6
73 changed files with 3502 additions and 741 deletions
|
|
@ -3,12 +3,12 @@ const vm=require('vm');
|
|||
const {assert,functionSource,app,css,html,read,buildMeta}=require('./helpers/app-source');
|
||||
const server=read('server.js');
|
||||
const packageVersion=JSON.parse(read('package.json')).version;
|
||||
assert(packageVersion===buildMeta.PACKAGE_VERSION&&buildMeta.APP_VERSION==='47.83','v47.83 canonical version marker is missing');
|
||||
assert(packageVersion===buildMeta.PACKAGE_VERSION&&buildMeta.APP_VERSION==='48.0','v47.84 canonical version marker is missing');
|
||||
|
||||
assert(html.includes('<div class="minimap-head"><b>マップ</b></div>')&&!html.includes('minimapStatus')&&!html.includes('周辺マップ'),'Map title or count removal is incomplete');
|
||||
assert(html.includes('<span class="shop">ショップ</span>')&&functionSource('makeBoard').includes('<small>ショップ</small>'),'Shop labels were not localized');
|
||||
assert(!functionSource('drawMinimap').includes('nearbyPlayers')&&!functionSource('drawMinimap').includes('visibleMetas.length')&&!functionSource('drawMinimap').includes('storeCount||0'),'Map still exposes player, board, or shop counts');
|
||||
assert(css.includes('.active-board-boundary-dash{stroke:#f5feff;stroke-width:9;stroke-dasharray:1 18'),'Active-board orbit dots were not thickened to the shadow scale');
|
||||
assert(!css.includes('.active-board-boundary-dash'),'Retired active-board orbit dots remain');
|
||||
|
||||
const renderDrag=functionSource('renderDragFrame'),overlay=functionSource('updatePickupHandleOverlay');
|
||||
assert(functionSource('activeDrawingLineColorIndex').includes('startColorIndex')&&overlay.includes('activeDrawingLineColorIndex(path)'),'Pickup overlay color is not derived from the actively drawn line');
|
||||
|
|
@ -23,7 +23,7 @@ assert(server.includes('meta?.puzzle?.obstacles||[]')&&server.includes('pathInde
|
|||
assert(functionSource('personalEconomyMode').includes('cloudProfile'),'Personal economy mode is not stable across transient connectivity changes');
|
||||
for(const name of['inventoryEntries','spentScoreTotal','pruneAndCount'])assert(functionSource(name).includes('personalEconomyMode()'),`${name} can fall back to shared-board purchases during an outage`);
|
||||
assert(functionSource('purchaseStoreItem').includes("personalEconomyMode()&&!onlinePlayerEconomy()")&&functionSource('purchaseStoreItem').includes('共有の所持数を確認できないため購入できません。'),'Offline personal purchases are not blocked safely');
|
||||
assert(functionSource('mergeGlobalRecords').includes('playerEarnedScore=Math.max')&&functionSource('applyPlayerEconomyEnvelope').includes('playerEarnedScore=Math.max'),'A stale global/player response can still reduce earned gems');
|
||||
assert(functionSource('applyPlayerEconomyEnvelope').includes('data.playerEarnedScore=Number.isSafeInteger(player.earnedScore)')&&!functionSource('applyPlayerEconomyEnvelope').includes('playerEarnedScore=Math.max'),'Personal gem balance is not server-authoritative');
|
||||
assert(functionSource('rememberStateSignatures').includes('!personalEconomyMode()'),'World-store purchase deltas can still reduce personal gems');
|
||||
|
||||
assert(functionSource('finalizeAtGate').includes('commitConnectedLineVisuals(b,pi)')&&functionSource('joinTips').includes('commitConnectedLineVisuals'),'Connected-line visuals are not scheduled after connection');
|
||||
|
|
@ -31,7 +31,7 @@ assert(functionSource('commitConnectedLineVisuals').includes('invalidateLineGrap
|
|||
|
||||
const preserveSource=functionSource('preserveSolvedBoardState');
|
||||
assert(preserveSource.includes('solvedSource?._summaryOnly?baseState:solvedSource')&&preserveSource.includes('preserved.solved=true')&&preserveSource.includes('delete preserved._summaryOnly'),'Solved summary recovery can still erase full route data');
|
||||
assert(functionSource('applyWorldSignal').includes('current?.solved&&!incoming.solved&&compatible')&&functionSource('applyWorldSignal').includes('preserveSolvedBoardState(current,incoming)'),'Cross-tab stale unsolved records can still overwrite a clear');
|
||||
assert(!app.includes('applyWorldSignal')&&!app.includes('BroadcastChannel'),'Retired cross-tab board reconciliation remains');
|
||||
assert(functionSource('hydrateMeta').includes('currentState?.solved&&!loadedState.solved')&&functionSource('hydrateMeta').includes('preserveSolvedBoardState(currentState,loadedState)'),'Rehydration can still restore an older unsolved state');
|
||||
assert(functionSource('evictHydratedBoardDetails').includes('summarizeBoardV2(target,currentState'),'Eviction can still cache a stale pre-clear summary');
|
||||
|
||||
|
|
@ -41,4 +41,4 @@ const summary={_summaryOnly:true,solved:true,expanded:true,solvedBy:'A',scoreAwa
|
|||
const preserved=context.preserveSolvedBoardState(summary,incoming);
|
||||
assert(preserved.solved===true&&preserved.paths.length===1&&preserved.paths[0].cells.length===2&&!('_summaryOnly' in preserved),'Solved-summary repair did not retain incoming full route data');
|
||||
|
||||
console.log('v47.83 map, store, economy, line inheritance, and clear persistence regression test passed');
|
||||
console.log('v47.84 map, store, economy, line inheritance, and clear persistence regression test passed');
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue