test(objects): skip weapon-itemID assertion when TileData is absent

ExtractLean clamps itemID > TileData.MaxItemValue to 1; MaxItemValue is 0 when
tiledata.mul is missing (CI), so Katana's 0x13FF only survives with client data.
Guard with [SkippableFact] + TileDataRequirement.SkipIfMissing() like other
data-dependent tests. The hue/cliloc assertion needs no data and stays a [Fact].

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kamron Batman 2026-07-19 13:15:38 -07:00
parent bff08c69d2
commit 1b8aff6b71
No known key found for this signature in database
GPG key ID: 7D81DF26D9A5D94A

View file

@ -1,5 +1,6 @@
using Server.Commands; using Server.Commands;
using Server.Items; using Server.Items;
using Server.Tests;
using Xunit; using Xunit;
namespace UOContent.Tests.Commands.Objects; namespace UOContent.Tests.Commands.Objects;
@ -7,9 +8,13 @@ namespace UOContent.Tests.Commands.Objects;
[Collection("Sequential UOContent Tests")] [Collection("Sequential UOContent Tests")]
public class ObjectIntrospectionLeanTests public class ObjectIntrospectionLeanTests
{ {
[Fact] [SkippableFact]
public void ExtractLean_reads_item_id_from_a_weapon() public void ExtractLean_reads_item_id_from_a_weapon()
{ {
// Requires client TileData: ExtractLean clamps itemID > TileData.MaxItemValue to 1, and
// MaxItemValue is 0 when tiledata.mul is absent (CI), so the real 0x13FF only survives with data.
TileDataRequirement.SkipIfMissing();
// Katana ctor is base(0x13FF) — era-independent. // Katana ctor is base(0x13FF) — era-independent.
var lean = ObjectIntrospection.ExtractLean(typeof(Katana)); var lean = ObjectIntrospection.ExtractLean(typeof(Katana));
Assert.Equal(0x13FF, lean.ItemID); Assert.Equal(0x13FF, lean.ItemID);