alarms: compose subtag reference from object's real Galaxy area for exact alarmmgr parity

This commit is contained in:
Joseph Doherty
2026-06-14 02:12:11 -04:00
parent 64db828d71
commit 5b31e99ab6
8 changed files with 138 additions and 39 deletions
@@ -37,6 +37,28 @@ public sealed class SubtagAlarmStateMachineTests
Assert.Equal("Area", e.Record.Group);
}
[Fact]
public void ActiveFalseToTrue_AlarmMgrShape_EmitsNativeProviderGroupTagName()
{
// Reference parity: a subtag target composed from the object's real Galaxy
// area must round-trip to exactly the native alarmmgr (wnwrap) record fields:
// Provider "Galaxy", Group = the real area "TestArea", and the object-rooted
// TagName "TestMachine_001.TestAlarm001".
var target = new AlarmSubtagTarget
{
AlarmFullReference = "Galaxy!TestArea.TestMachine_001.TestAlarm001",
SourceObjectReference = "TestMachine_001",
ActiveSubtag = "TestMachine_001.TestAlarm001.InAlarm",
};
var sm = new SubtagAlarmStateMachine(new[] { target });
var ts = new DateTime(2026, 6, 13, 9, 0, 0, DateTimeKind.Utc);
var events = sm.Apply("TestMachine_001.TestAlarm001.InAlarm", true, ts);
var e = Assert.Single(events);
Assert.Equal("Galaxy", e.Record.ProviderName);
Assert.Equal("TestArea", e.Record.Group);
Assert.Equal("TestMachine_001.TestAlarm001", e.Record.TagName);
}
[Fact]
public void ActiveFalseToTrue_NoProviderBang_UsesWholeReferenceAsTagName()
{