using Microsoft.Extensions.Logging.Abstractions; using ScadaLink.DataConnectionLayer.Adapters; namespace ScadaLink.DataConnectionLayer.Tests; /// /// WP-34: Tests for protocol extensibility via DataConnectionFactory. /// public class DataConnectionFactoryTests { [Fact] public void Create_OpcUa_ReturnsOpcUaAdapter() { var factory = new DataConnectionFactory(NullLoggerFactory.Instance); var connection = factory.Create("OpcUa", new Dictionary()); Assert.IsType(connection); } [Fact] public void Create_CaseInsensitive() { var factory = new DataConnectionFactory(NullLoggerFactory.Instance); var connection = factory.Create("opcua", new Dictionary()); Assert.IsType(connection); } [Fact] public void Create_UnknownProtocol_Throws() { var factory = new DataConnectionFactory(NullLoggerFactory.Instance); var ex = Assert.Throws(() => factory.Create("UnknownProtocol", new Dictionary())); Assert.Contains("Unknown protocol type", ex.Message); Assert.Contains("OpcUa", ex.Message); } [Fact] public void RegisterAdapter_ExtendsFactory() { var factory = new DataConnectionFactory(NullLoggerFactory.Instance); // WP-34: Adding new protocol = register adapter factory.RegisterAdapter("Custom", _ => new OpcUaDataConnection( new DefaultOpcUaClientFactory(), NullLogger.Instance)); var connection = factory.Create("Custom", new Dictionary()); Assert.NotNull(connection); } }