9c39f2b6c4
Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
45 lines
1.6 KiB
C#
45 lines
1.6 KiB
C#
using Microsoft.Extensions.Logging;
|
|
using Shouldly;
|
|
using Xunit;
|
|
using ZB.MOM.WW.OtOpcUa.Core.Hosting;
|
|
|
|
namespace ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.Tests;
|
|
|
|
/// <summary>#602 CONV-3: the TwinCAT factory hands the host logger factory to the driver.</summary>
|
|
[Trait("Category", "Unit")]
|
|
public sealed class TwinCATFactoryLoggerTests
|
|
{
|
|
private sealed class RecordingLoggerFactory : ILoggerFactory
|
|
{
|
|
public List<string> Categories { get; } = [];
|
|
public ILogger CreateLogger(string categoryName)
|
|
{
|
|
lock (Categories) Categories.Add(categoryName);
|
|
return Microsoft.Extensions.Logging.Abstractions.NullLogger.Instance;
|
|
}
|
|
public void AddProvider(ILoggerProvider provider) { }
|
|
public void Dispose() { }
|
|
}
|
|
|
|
[Fact]
|
|
public void Registered_factory_creates_the_driver_logger_from_the_host_factory()
|
|
{
|
|
var lf = new RecordingLoggerFactory();
|
|
var registry = new DriverFactoryRegistry();
|
|
TwinCATDriverFactoryExtensions.Register(registry, lf);
|
|
|
|
var drv = registry.TryGet(TwinCATDriverFactoryExtensions.DriverTypeName)!("drv-1", "{}");
|
|
|
|
drv.ShouldBeOfType<TwinCATDriver>();
|
|
lf.Categories.ShouldContain(typeof(TwinCATDriver).FullName!);
|
|
}
|
|
|
|
[Fact]
|
|
public void Registering_without_a_logger_factory_still_works()
|
|
{
|
|
var registry = new DriverFactoryRegistry();
|
|
TwinCATDriverFactoryExtensions.Register(registry);
|
|
registry.TryGet(TwinCATDriverFactoryExtensions.DriverTypeName)!("drv-1", "{}").ShouldBeOfType<TwinCATDriver>();
|
|
}
|
|
}
|