acdream/tests/AcDream.App.Tests
Erik bae34aaa8b fix(vtank): slice 7 round F item 5 — Monsters move-up/down arrows stay adjacent
Resemblance re-check: "Monsters' move-down arrow drifted ~67 px from
move-up because the last (auto) column absorbed the new width — add a
trailing filler column." docs/plugin-ui-markup.md's own "Width
semantics" rule makes the LAST <column> in a <list> ALWAYS treated as
auto, regardless of its own declared width — MonsterMoveDownIcons was
the grid's 23rd and, until this commit, LAST column, so it silently
absorbed every pixel of window growth instead of staying at its
declared 23px pitch. The gap was already wrong (89.5px) at the
authored 984-wide default, not just after a resize.

Adds a 24th, trailing <column type="text"> with empty items
(MonsterFillerColumn) so MoveDownIcons is no longer last and keeps its
own real width; the filler absorbs the remainder instead — the same
"fixed icon columns + trailing auto filler" shape lstMetaRules' three
16px icon columns + two auto text columns already prove out
(MarkupListColumnsTests.EndToEnd_MetaShapedSixColumnList_...). The
filler's onclick (MonsterFillerClick) is a real, bound no-op —
MossTankMarkupContractTests.EveryInteractiveControlDeclaresARealHandlerBinding
requires every <column> to declare SOME handler, so "no binding at all"
(the other option this item's own spec offered) is not actually legal
in this codebase; clicking blank filler space does nothing, but the
binding itself is real.

Mutation shown to fail first: the new
MonstersMoveUpAndMoveDownIconsStayAdjacentAtEveryWidth theory (984 and
1100, MarkupDocument.Build over the real mosstank.xml with a real
IMarkupIconResolver stub) failed at BOTH widths against the unmodified
markup — 89.5px apart at 984, 147.5px at 1100 — then passed (fixed
~23px gap at both) once the filler column was added.
MonstersGridHasVtanksTwentyThreeColumnsInOrderWithRetailHeaderTooltips'
23->24 column-count/type update is the other required change; VTank's
own 23-column shape is unchanged, only a MossTank-only 24th filler is
new.

MossTank suite 724/724 (one test's expectations updated, no net count
change); App markup/plugin filter 258 -> 260 (the new theory's two
InlineData cases).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 19:04:56 +02:00
..
Architecture test: replace gameplay owner source freezes 2026-08-18 16:49:38 +02:00
Audio feat(audio): Campaign A slice A2 — retail's 2D pan+gain mixer replaces AL 3D 2026-08-08 21:58:50 +02:00
Combat fix #436: combat no-target refusal reaches the SpewBox with retail's exact text 2026-08-24 12:53:11 +02:00
Composition Finish bounded lighting-observer cleanup and record verification 2026-09-05 15:15:59 +02:00
Configuration fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
Credentials test: make prerequisite lanes fail honestly 2026-08-18 12:09:41 +02:00
Diagnostics fix(headless): S1 ACDREAM_HEADLESS_CONSOLE=0 disables even on a real terminal 2026-09-07 07:51:41 +02:00
Input fix(camera): port retail offset adjustment laws 2026-08-31 05:42:23 +02:00
Interaction fix(client): restore retail interaction parity 2026-08-26 20:45:11 +02:00
Net fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
Physics fix #482: restore neighboring outdoor wall collision 2026-09-05 18:42:31 +02:00
Platform feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
Plugins fix #363: route plugin system text to the chat window, not SpewBox 2026-09-07 08:22:22 +02:00
Rendering refactor(vtank): slice 7 fix round B item 13 — glob mosstank*.xml everywhere it's named 2026-09-07 11:53:01 +02:00
Runtime fix(client): restore retail interaction parity 2026-08-26 20:45:11 +02:00
Settings fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
Spells feat(headless): share immutable gameplay content 2026-07-27 09:00:48 +02:00
Streaming fix #483: restore far terrain and close OVERHAUL with #484 deferred 2026-09-06 10:22:51 +02:00
UI fix(vtank): slice 7 round F item 5 — Monsters move-up/down arrows stay adjacent 2026-09-07 19:04:56 +02:00
World fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
AcDream.App.Tests.csproj test(app): slice 7 fix round B item 15 — build every mosstank*.xml against a real MossTankPanel 2026-09-07 13:58:18 +02:00
BoundedTestDatCollection.cs perf(content): remove exception-driven setup probes 2026-07-24 15:12:21 +02:00
FramePhaseTestDoubles.cs refactor(runtime): move session lifetime and ordered transport 2026-07-25 19:39:24 +02:00
FrameProfilerReportTests.cs perf(diag): complete trustworthy Slice A capture tooling 2026-07-24 12:46:51 +02:00
FrameStatsBufferTests.cs fix(pipeline): MP0 - profiler toggle-path hygiene + Max() seed (review follow-up) 2026-07-05 19:26:28 +02:00
GameRuntimeTestFactory.cs refactor(runtime): cut graphical host over to canonical root 2026-07-26 19:06:09 +02:00
GlobalUsings.cs feat(runtime): share chat commands and run login sequence 2026-08-14 20:27:45 +02:00
LiveEntityRuntimeFixture.cs test(runtime): restore the world-frame precondition across first-entry fixtures 2026-08-03 13:32:28 +02:00
LiveEntitySpawnFixture.cs feat(runtime): C3c - production placement cutover: both hosts on the residence conductors (routes 1+8) 2026-08-02 18:10:33 +02:00
packages.neutral.lock.json test(app): slice 7 fix round B item 15 — build every mosstank*.xml against a real MossTankPanel 2026-09-07 13:58:18 +02:00
RuntimeDatAccessArchitectureTests.cs feat(headless): share immutable process content 2026-07-27 08:37:24 +02:00
RuntimeDatCollectionFactoryTests.cs feat(headless): share immutable process content 2026-07-27 08:37:24 +02:00
RuntimeOptionsRetailUiTests.cs fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
RuntimeOptionsTests.cs fix(vt): F host-composed VtankProfiles storage replaces raw path string 2026-09-06 23:03:04 +02:00
RuntimeWorldTransitTestDriver.cs refactor(runtime): own teleport destination correlation 2026-07-26 17:52:34 +02:00
ThreadSchedulingCollection.cs test(ci): harden scheduling and allocation gates 2026-08-27 19:28:10 +02:00
ZeroAllocationProbe.cs test(app): measure the warmed path, not the path being warmed (#250) 2026-07-29 03:42:08 +02:00
ZeroAllocationProbeTests.cs test(app): measure the warmed path, not the path being warmed (#250) 2026-07-29 03:42:08 +02:00