feat(templateengine): flatten native alarm sources (inherit/compose/override)

This commit is contained in:
Joseph Doherty
2026-05-29 16:00:10 -04:00
parent fc05ba1f6a
commit e5392d2c7b
2 changed files with 173 additions and 0 deletions
@@ -666,4 +666,38 @@ public class FlatteningServiceTests
// Parent module of a depth-2 script is the enclosing Pump module.
Assert.Equal("MainPump", depth2.Scope.ParentPath);
}
[Fact]
public void Flatten_ResolvesNativeAlarmSources_FromTemplate()
{
var template = CreateTemplate(1, "Base");
template.NativeAlarmSources.Add(new TemplateNativeAlarmSource("Pressure")
{ ConnectionName = "Opc", SourceReference = "ns=2;s=P1" });
var result = _sut.Flatten(CreateInstance(), [template],
new Dictionary<int, IReadOnlyList<TemplateComposition>>(),
new Dictionary<int, IReadOnlyList<Template>>(),
new Dictionary<int, DataConnection>());
Assert.True(result.IsSuccess);
Assert.Single(result.Value.NativeAlarmSources);
Assert.Equal("Pressure", result.Value.NativeAlarmSources[0].CanonicalName);
Assert.Equal("ns=2;s=P1", result.Value.NativeAlarmSources[0].SourceReference);
}
[Fact]
public void Flatten_InstanceOverride_ReplacesNativeAlarmSourceReference()
{
var template = CreateTemplate(1, "Base");
template.NativeAlarmSources.Add(new TemplateNativeAlarmSource("Pressure")
{ ConnectionName = "Opc", SourceReference = "ns=2;s=DEFAULT" });
var instance = CreateInstance();
instance.NativeAlarmSourceOverrides.Add(new InstanceNativeAlarmSourceOverride("Pressure")
{ SourceReferenceOverride = "ns=2;s=Tank07" });
var result = _sut.Flatten(instance, [template],
new Dictionary<int, IReadOnlyList<TemplateComposition>>(),
new Dictionary<int, IReadOnlyList<Template>>(),
new Dictionary<int, DataConnection>());
Assert.True(result.IsSuccess);
Assert.Equal("ns=2;s=Tank07", result.Value.NativeAlarmSources[0].SourceReference);
Assert.Equal("Override", result.Value.NativeAlarmSources[0].Source);
}
}