feat(core): D.2b-B B-Wire — ClientObjectTable.UpsertProperties (create-if-absent)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ca94d1d2f6
commit
b56087b498
2 changed files with 67 additions and 0 deletions
|
|
@ -0,0 +1,41 @@
|
|||
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);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue