test(net): #13 end-to-end PD trailer fixture covering every section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-10 09:39:36 +02:00
parent 91693ea44c
commit 58095d8d4b

View file

@ -705,4 +705,63 @@ public sealed class PlayerDescriptionParserTests
Assert.Equal(0x50000300u, parsed.Value.Equipped[0].Guid);
Assert.Equal(16, parsed.Value.GameplayOptions.Length);
}
[Fact]
public void TryParse_FullTrailer_AllSectionsPopulated()
{
var sb = new MemoryStream();
using var writer = new BinaryWriter(sb);
writer.Write(0u); // propertyFlags
writer.Write(0x52u); // weenieType
writer.Write(0x201u); // ATTRIBUTE | ENCHANTMENT
writer.Write(1u); // has_health
writer.Write(0u); // empty attribute_flags
writer.Write(0u); // empty enchantment mask
// option_flags = SHORTCUT | DESIRED_COMPS | CHARACTER_OPTIONS2 | SPELL_LISTS8
// = 0x01 | 0x08 | 0x40 | 0x400 = 0x449
writer.Write(0x449u);
writer.Write(0xAA000001u); // options1
// Shortcuts: count=1
writer.Write(1u);
writer.Write(3u); writer.Write(0xCAFEFACEu); writer.Write((ushort)100); writer.Write((ushort)2);
// 8 hotbars, all empty for brevity.
for (int i = 0; i < 8; i++) writer.Write(0u);
// Desired comps: count=1
writer.Write((ushort)1); writer.Write((ushort)0);
writer.Write(0xC1u); writer.Write(99u);
// spellbook_filters
writer.Write(0xF11Du);
// options2
writer.Write(0xBB000002u);
// Inventory + equipped (no GAMEPLAY_OPTIONS, strict path)
writer.Write(1u);
writer.Write(0x50000400u); writer.Write(0u);
writer.Write(1u);
writer.Write(0x50000500u); writer.Write(0x00000200u); writer.Write(1u);
var parsed = PlayerDescriptionParser.TryParse(sb.ToArray());
Assert.NotNull(parsed);
var v = parsed!.Value;
Assert.Equal(0xAA000001u, v.Options1);
Assert.Equal(0xBB000002u, v.Options2);
Assert.Equal(0xF11Du, v.SpellbookFilters);
Assert.Single(v.Shortcuts);
Assert.Equal(0xCAFEFACEu, v.Shortcuts[0].ObjectGuid);
Assert.Equal(8, v.HotbarSpells.Count);
Assert.All(v.HotbarSpells, l => Assert.Empty(l));
Assert.Single(v.DesiredComps);
Assert.Equal((0xC1u, 99u), v.DesiredComps[0]);
Assert.Single(v.Inventory);
Assert.Equal(0x50000400u, v.Inventory[0].Guid);
Assert.Single(v.Equipped);
Assert.Equal(0x50000500u, v.Equipped[0].Guid);
}
}