CNA-VGAP-028: Several XNB runtime readers are never exercised with externally produced files, although genuine XNA 4.0 outputs for some of them are already in the tree

CNA snapshot 009d40f5  ·  Known Issues › Verification gaps  ·  source links pinned to 009d40f5

✓

Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.

Texture3D, Curve, Video, DXT1/DXT5 Texture2D, container-version-4 textures and four of the five stock effects are read in tests only from CNA-written or hand-built bytes; the XNA-built differential corpus is used only by pipeline tests.

Identifier
CNA-VGAP-028
Category
Verification gap
Subsystem
Testing & evidence
Status
Open
Verified against
CNA 009d40f5 (009d40f5dd085c4e674d3479675fac84b12b3e0a)
Evidence basis
Source-verified: read at TARGET, not executed
Tests touching this area
Yes: see Current tests
Affected contract
The XNB type readers for Texture3D, Curve, Video, Texture2D (DXT1/DXT5, version 4) and AlphaTestEffect, DualTextureEffect, EnvironmentMapEffect and SkinnedEffect

Expected behaviour

Reader behaviour is best evidenced by files a genuine producer wrote: an XNA 4.0 or MonoGame pipeline output decoded by CNA's runtime reader and checked against known values.

Actual behaviour at TARGET

The externally produced runtime fixtures are the MonoGame files under tests/assets/xnb/monogame (textures, a DXT1 cube, a Dxt3 font, a BasicEffect model, audio, a song) and two XNA 4.0 files under tests/assets/xnb/xna40. The CNA corpus under tests/assets/xnb/cna (Texture3D, Curve and others) was written by CNA's own writer and, per its fixtures.json, has not been validated against a real XNA runtime. tests/reference/xna40/differential holds 130 XNA 4.0 outputs, including a Curve (xml_framework_curve.xnb), volume textures and DXT1/DXT5 textures, but the tests use them as byte references for the content pipeline (and DxtUtilTests.cpp as the source of hard-coded texel values); no runtime reader test loads them.

Source locations

Evidence

Checked by listing and reading the fixture manifests and grepping the tests at 009d40f5 for loads of the differential files; not executed.

Focused reproduction

No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.

Current tests

Runtime reader tests load the MonoGame and XNA fixtures named above and the CNA-written corpus; content-pipeline tests compare CNA output bytes with the differential corpus.

Regression test

Runtime Load<T> tests over the existing XNA differential files for Curve, a volume texture and the DXT1/DXT5 textures, asserting the decoded values (the expected texels already exist in DxtUtilTests.cpp); an externally produced file for each remaining stock effect.

Blast radius

Evidence only: the readers exist and are tested with CNA-written bytes; whether they accept every variant real producers emit is not established.

Workaround

No workaround is known.

The same subject is explained at several altitudes. These are the neighbouring pages at each one.