using Microsoft.Extensions.Options; namespace ZB.MOM.WW.ScadaBridge.SiteRuntime.Tests; /// /// values size the staggered Instance-Actor /// startup batches, the dedicated script-execution thread scheduler, and the /// site-wide stream buffer. A zero/negative count crashes actor construction with /// an opaque ; these tests assert the /// rejects a bad /// ScadaBridge:SiteRuntime section with a clear, key-naming message. /// public class SiteRuntimeOptionsValidatorTests { private static ValidateOptionsResult Validate(SiteRuntimeOptions options) => new SiteRuntimeOptionsValidator().Validate(Options.DefaultName, options); [Fact] public void DefaultOptions_AreValid() { var result = Validate(new SiteRuntimeOptions()); Assert.True(result.Succeeded, result.FailureMessage); } [Fact] public void ZeroStartupBatchSize_IsRejected() { var result = Validate(new SiteRuntimeOptions { StartupBatchSize = 0 }); Assert.True(result.Failed); Assert.Contains("StartupBatchSize", result.FailureMessage); } [Fact] public void ZeroScriptExecutionThreadCount_IsRejected() { var result = Validate(new SiteRuntimeOptions { ScriptExecutionThreadCount = 0 }); Assert.True(result.Failed); Assert.Contains("ScriptExecutionThreadCount", result.FailureMessage); } [Fact] public void ZeroTagSubscribeRetryIntervalMs_IsRejected() { var result = Validate(new SiteRuntimeOptions { TagSubscribeRetryIntervalMs = 0 }); Assert.True(result.Failed); Assert.Contains("TagSubscribeRetryIntervalMs", result.FailureMessage); } [Fact] public void NegativeStuckScriptGraceMs_IsRejected() { var result = Validate(new SiteRuntimeOptions { StuckScriptGraceMs = -1 }); Assert.True(result.Failed); Assert.Contains("StuckScriptGraceMs", result.FailureMessage); } [Fact] public void ZeroStreamBufferSize_IsRejected() { var result = Validate(new SiteRuntimeOptions { StreamBufferSize = 0 }); Assert.True(result.Failed); Assert.Contains("StreamBufferSize", result.FailureMessage); } [Fact] public void NegativeStartupBatchDelayMs_IsRejected() { var result = Validate(new SiteRuntimeOptions { StartupBatchDelayMs = -1 }); Assert.True(result.Failed); Assert.Contains("StartupBatchDelayMs", result.FailureMessage); } }