feat(commons): ActorNameRules mirroring Akka path-element validation

This commit is contained in:
Joseph Doherty
2026-10-22 06:05:06 -04:00
parent 513fa1aa16
commit 3a53e7059b
2 changed files with 101 additions and 0 deletions
@@ -0,0 +1,39 @@
using ZB.MOM.WW.ScadaBridge.Commons.Validation;
namespace ZB.MOM.WW.ScadaBridge.Commons.Tests.Validation;
public class ActorNameRulesTests
{
[Theory]
[InlineData("a b")]
[InlineData("Furnace #3")]
[InlineData("Ofen Süd")]
[InlineData("x/y")]
[InlineData("")]
[InlineData(null)]
[InlineData("$abc")]
[InlineData("100%")]
public void IsValid_RejectsIllegalNames(string? name)
{
Assert.False(ActorNameRules.IsValid(name));
Assert.NotNull(ActorNameRules.Describe(name));
}
[Theory]
[InlineData("Furnace-3")]
[InlineData("Line_1.A")]
[InlineData("a%20b")]
public void IsValid_AcceptsLegalNames(string name)
{
Assert.True(ActorNameRules.IsValid(name));
Assert.Null(ActorNameRules.Describe(name));
}
[Fact]
public void Describe_NamesTheOffendingValue()
{
var msg = ActorNameRules.Describe("Furnace #3");
Assert.Contains("'Furnace #3'", msg);
Assert.Contains("not allowed in a runtime actor name", msg);
}
}