refactor(pipeline): MP1b review - unify DatCollectionAdapter + TOC/log test gaps
Adversarially-verified review findings 7 and 8: (7) The DatCollection->IDatReaderWriter adapter existed as THREE near-identical copies (App-internal original, Bake's copy, Content. Tests' copy) — a structure where adapter drift is exactly what the live-vs-pak equivalence suite cannot detect (both sides would only drift together if they shared one implementation). Now ONE public AcDream.Content.DatCollectionAdapter next to IDatReaderWriter (GL-free home established in MP1a), carrying App's FULL behavior including the [dat-miss] TryGet tripwire log (which now also covers the bake tool and the equivalence suite) and the caching/locking. All three copies deleted; WbMeshAdapter (App), BakeRunner (Bake), and PakEquivalenceTests (Content.Tests) resolve the shared class. Iteration properties return the REAL dat iterations — the App copy's hardcoded 0 was a stub nothing read; the unification intentionally keeps truth (noted in the doc comment). Verified post-move: no Silk.NET anywhere in Content / Bake / Content.Tests / Bake.Tests resolved dependency graphs. (8) Two test gaps closed in PakRoundTripTests: (a) direct on-disk TOC sortedness — blobs added in DESCENDING key order, then the raw file bytes parsed (not through the reader) and every TOC entry asserted strictly ascending; (b) corrupt-blob logging — five repeated reads through both public paths (TryReadObjectMeshData + ContainsKey) with stderr captured, asserting exactly ONE [pak-corrupt] line for the victim key. Full suite: 4120 tests, 0 failures (Content.Tests 56, Bake.Tests 1, plus the pre-existing 4 skips).
This commit is contained in:
parent
86e0dc4655
commit
859cf5ec02
7 changed files with 135 additions and 351 deletions
|
|
@ -10,9 +10,10 @@ using System.Diagnostics.CodeAnalysis;
|
|||
//
|
||||
// MP1a (2026-07-05, Task 4): moved to AcDream.Content, namespace only —
|
||||
// MeshExtractor's constructor takes IDatReaderWriter and must be GL-free.
|
||||
// Consumers: MeshExtractor (this assembly) reads through it;
|
||||
// DatCollectionAdapter (the concrete DatCollection-backed implementation)
|
||||
// and ObjectMeshManager live in AcDream.App and implement/hold it from there.
|
||||
// MP1b review (finding 7): the concrete DatCollection-backed implementation
|
||||
// (DatCollectionAdapter, this assembly) now lives HERE too — one shared
|
||||
// adapter for ObjectMeshManager (App), acdream-bake, and the equivalence
|
||||
// suite, so the three consumers can never drift apart.
|
||||
|
||||
namespace AcDream.Content;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue