using AcDream.Core.Items; using Xunit; namespace AcDream.Core.Tests.Items; public sealed class ClientObjectTableUpdateTests { [Fact] public void UpsertProperties_unknownObject_createsThenMerges() { var t = new ClientObjectTable(); bool added = false; t.ObjectAdded += _ => added = true; var bundle = new PropertyBundle(); bundle.Ints[5] = 1234; // EncumbranceVal t.UpsertProperties(0x50000001u, bundle); var o = t.Get(0x50000001u); Assert.NotNull(o); Assert.Equal(1234, o!.Properties.Ints[5]); Assert.True(added); } [Fact] public void UpsertProperties_existingObject_mergesAndFiresUpdated() { var t = new ClientObjectTable(); t.AddOrUpdate(new ClientObject { ObjectId = 0x50000001u }); bool updated = false; t.ObjectUpdated += _ => updated = true; var bundle = new PropertyBundle(); bundle.Ints[5] = 99; t.UpsertProperties(0x50000001u, bundle); Assert.Equal(99, t.Get(0x50000001u)!.Properties.Ints[5]); Assert.True(updated); } }