From 58426fb6e35a91ffc44e6697295aa0783945fb49 Mon Sep 17 00:00:00 2001 From: J0EK3R Date: Mon, 6 Jul 2026 10:19:24 +0200 Subject: [PATCH 1/8] improved UnitTests for vendors MouldKing and JIESTAR by using AssemblyModules-DI --- .../DeviceManagement/DI/JieStarVendorTests.cs | 115 +++++ .../DI/MouldKingVendorTests.cs | 146 ++++++ .../DeviceManagement/DI/VendorBuilderTests.cs | 416 ------------------ 3 files changed, 261 insertions(+), 416 deletions(-) create mode 100644 BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs create mode 100644 BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs delete mode 100644 BrickController2/BrickController2.Tests/DeviceManagement/DI/VendorBuilderTests.cs diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs new file mode 100644 index 00000000..7f415383 --- /dev/null +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs @@ -0,0 +1,115 @@ +using Autofac; +using BrickController2.DeviceManagement; +using BrickController2.DeviceManagement.DI; +using BrickController2.DeviceManagement.JieStar; +using BrickController2.PlatformServices.BluetoothLE; +using BrickController2.UI.Services.AppIdentifier; +using FluentAssertions; +using Moq; +using System; +using Xunit; +using JieStarVendor = BrickController2.DeviceManagement.JieStar.JieStar; + +namespace BrickController2.Tests.DeviceManagement.DI; + +public class JieStarVendorTests +{ + private DeviceFactory _deviceFactory; + + public JieStarVendorTests() + { + // Arrange + var builder = new ContainerBuilder(); + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); + + Mock appIdentifierService = new(); + appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); + + builder.RegisterInstance(appIdentifierService.Object); + + builder.Register(c => + { + IComponentContext ctx = c.Resolve(); + return (deviceType, name, address, deviceData, settings) => ctx.ResolveOptionalKeyed(deviceType, + new NamedParameter("name", name), + new NamedParameter("address", address), + new NamedParameter("deviceData", deviceData), + new NamedParameter("settings", settings)); + }); + + // execute registration of vendor JIESTAR + builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); + + // Act + var container = builder.Build(); + _deviceFactory = container.Resolve(); + } + + [Theory] + [InlineData("Device1")] + [InlineData("Device2")] + [InlineData("Device3")] + public void RegisterDevice_JieStar_SCM4_ReturnedDevice(string address) + { + DeviceType deviceType = DeviceType.JieStarSCM4; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + var device = _deviceFactory(deviceType, name, address, deviceData, []); + + device.Should().NotBeNull(); + device.Should().BeOfType(); + } + + [Theory] + [InlineData("Device")] + [InlineData("IllegalDevice")] + public void RegisterDevice_JieStar_SCM4_IllegalDevice(string address) + { + DeviceType deviceType = DeviceType.JieStarSCM4; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + Action act = () => _deviceFactory(deviceType, name, address, deviceData, []); + + act.Should().Throw() + .WithInnerException() + .WithInnerException() + .Which.ParamName.Should().Be(nameof(address)); + } + + [Theory] + [InlineData("Device1")] + [InlineData("Device2")] + [InlineData("Device3")] + public void RegisterDevice_JieStar_SCM8_ReturnedDevice(string address) + { + DeviceType deviceType = DeviceType.JieStarSCM8; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + var device = _deviceFactory(deviceType, name, address, deviceData, []); + + device.Should().NotBeNull(); + device.Should().BeOfType(); + } + + [Theory] + [InlineData("Device")] + [InlineData("IllegalDevice")] + public void RegisterDevice_JieStar_SCM8_IllegalDevice(string address) + { + DeviceType deviceType = DeviceType.JieStarSCM8; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + Action act = () => _deviceFactory(deviceType, name, address, deviceData, []); + + act.Should().Throw() + .WithInnerException() + .WithInnerException() + .Which.ParamName.Should().Be(nameof(address)); + } +} diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs new file mode 100644 index 00000000..19ff82fd --- /dev/null +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs @@ -0,0 +1,146 @@ +using Autofac; +using BrickController2.DeviceManagement; +using BrickController2.DeviceManagement.DI; +using BrickController2.DeviceManagement.MouldKing; +using BrickController2.PlatformServices.BluetoothLE; +using BrickController2.UI.Services.AppIdentifier; +using FluentAssertions; +using Moq; +using System; +using Xunit; +using MouldKingVendor = BrickController2.DeviceManagement.MouldKing.MouldKing; + +namespace BrickController2.Tests.DeviceManagement.DI; + +public class MouldKingVendorTests +{ + private DeviceFactory _deviceFactory; + + public MouldKingVendorTests() + { + // Arrange + var builder = new ContainerBuilder(); + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); + + Mock appIdentifierService = new(); + appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); + + builder.RegisterInstance(appIdentifierService.Object); + + builder.Register(c => + { + IComponentContext ctx = c.Resolve(); + return (deviceType, name, address, deviceData, settings) => ctx.ResolveOptionalKeyed(deviceType, + new NamedParameter("name", name), + new NamedParameter("address", address), + new NamedParameter("deviceData", deviceData), + new NamedParameter("settings", settings)); + }); + + // execute registration of vendor MouldKing + builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); + + // Act + var container = builder.Build(); + + _deviceFactory = container.Resolve(); + } + + [Theory] + [InlineData("Device")] // The address is not relevant for this device + [InlineData("IllegalDevice")] // The address is not relevant for this device + public void RegisterDevice_MK3_8_ReturnedDevice(string address) + { + DeviceType deviceType = DeviceType.MK3_8; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + var device = _deviceFactory(deviceType, name, address, deviceData, []); + + device.Should().NotBeNull(); + device.Should().BeOfType(); + } + + [Theory] + [InlineData("Device")] + [InlineData("IllegalDevice")] + public void RegisterDevice_MK4_IllegalDevice(string address) + { + DeviceType deviceType = DeviceType.MK4; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + Action act = () => _deviceFactory(deviceType, name, address, deviceData, []); + + act.Should().Throw() + .WithInnerException() + .WithInnerException() + .Which.ParamName.Should().Be(nameof(address)); + } + + [Theory] + [InlineData("Device1")] + [InlineData("Device2")] + [InlineData("Device3")] + public void RegisterDevice_MK4_ReturnedDevice(string address) + { + DeviceType deviceType = DeviceType.MK4; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + var device = _deviceFactory(deviceType, name, address, deviceData, []); + + device.Should().NotBeNull(); + device.Should().BeOfType(); + } + + [Theory] + [InlineData("Device")] // The address is not relevant for this device + [InlineData("IllegalDevice")] // The address is not relevant for this device + public void RegisterDevice_MK5_ReturnedDevice(string address) + { + DeviceType deviceType = DeviceType.MK5; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + var device = _deviceFactory(deviceType, name, address, deviceData, []); + + device.Should().NotBeNull(); + device.Should().BeOfType(); + } + + [Theory] + [InlineData("Device1")] + [InlineData("Device2")] + [InlineData("Device3")] + public void RegisterDevice_MK6_ReturnedDevice(string address) + { + DeviceType deviceType = DeviceType.MK6; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + var device = _deviceFactory(deviceType, name, address, deviceData, []); + + device.Should().NotBeNull(); + device.Should().BeOfType(); + } + + [Theory] + [InlineData("Device")] + [InlineData("IllegalDevice")] + public void RegisterDevice_MK6_IllegalDevice(string address) + { + DeviceType deviceType = DeviceType.MK6; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + Action act = () => _deviceFactory(deviceType, name, address, deviceData, []); + + act.Should().Throw() + .WithInnerException() + .WithInnerException() + .Which.ParamName.Should().Be(nameof(address)); + } +} diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/VendorBuilderTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/VendorBuilderTests.cs deleted file mode 100644 index cf7429b4..00000000 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/VendorBuilderTests.cs +++ /dev/null @@ -1,416 +0,0 @@ -using Autofac; -using BrickController2.DeviceManagement; -using BrickController2.DeviceManagement.DI; -using BrickController2.DeviceManagement.JieStar; -using BrickController2.DeviceManagement.MouldKing; -using BrickController2.PlatformServices.BluetoothLE; -using BrickController2.UI.Services.AppIdentifier; -using FluentAssertions; -using Moq; -using System; -using Xunit; -using JieStarVendor = BrickController2.DeviceManagement.JieStar.JieStar; -using MouldKingVendor = BrickController2.DeviceManagement.MouldKing.MouldKing; - -namespace BrickController2.Tests.DeviceManagement.DI; - -public class VendorBuilderTests -{ - [Theory] - [InlineData("Device1")] - [InlineData("Device2")] - [InlineData("Device3")] - public void RegisterDevice_JieStar_SCM4_ReturnedDevice(string address) - { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); - - builder.RegisterInstance(appIdentifierService.Object); - builder.RegisterType(); - - var vendorBuilder = new VendorBuilder(builder, new JieStarVendor()); - - // Act - var deviceBuilder = vendorBuilder.RegisterDevice(); - var container = builder.Build(); - - // Assert - deviceBuilder.Should().BeOfType>(); - - string name = "TestDevice"; - byte[] deviceData = [1, 2, 3]; - var device = container.ResolveKeyed(DeviceType.JieStarSCM4, - new NamedParameter(nameof(name), name), - new NamedParameter(nameof(address), address), - new NamedParameter(nameof(deviceData), deviceData)); - - device.Should().NotBeNull(); - device.Should().BeOfType(); - } - - [Theory] - [InlineData("Device")] - [InlineData("IllegalDevice")] - public void RegisterDevice_JieStar_SCM4_IllegalDevice(string address) - { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); - - builder.RegisterInstance(appIdentifierService.Object); - builder.RegisterType(); - - var vendorBuilder = new VendorBuilder(builder, new JieStarVendor()); - - // Act - var deviceBuilder = vendorBuilder.RegisterDevice(); - var container = builder.Build(); - - // Assert - deviceBuilder.Should().BeOfType>(); - - string name = "TestDevice"; - byte[] deviceData = [1, 2, 3]; - - Action act = () => container.ResolveKeyed(DeviceType.JieStarSCM4, - new NamedParameter(nameof(name), name), - new NamedParameter(nameof(address), address), - new NamedParameter(nameof(deviceData), deviceData)); - - act.Should().Throw() - .WithInnerException() - .WithInnerException() - .Which.ParamName.Should().Be(nameof(address)); - } - - [Theory] - [InlineData("Device1")] - [InlineData("Device2")] - [InlineData("Device3")] - public void RegisterDevice_JieStar_SCM8_ReturnedDevice(string address) - { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); - - builder.RegisterInstance(appIdentifierService.Object); - builder.RegisterType(); - - var vendorBuilder = new VendorBuilder(builder, new JieStarVendor()); - - // Act - var deviceBuilder = vendorBuilder.RegisterDevice(); - var container = builder.Build(); - - // Assert - deviceBuilder.Should().BeOfType>(); - - string name = "TestDevice"; - byte[] deviceData = [1, 2, 3]; - var device = container.ResolveKeyed(DeviceType.JieStarSCM8, - new NamedParameter(nameof(name), name), - new NamedParameter(nameof(address), address), - new NamedParameter(nameof(deviceData), deviceData)); - - device.Should().NotBeNull(); - device.Should().BeOfType(); - } - - [Theory] - [InlineData("Device")] - [InlineData("IllegalDevice")] - public void RegisterDevice_JieStar_SCM8_IllegalDevice(string address) - { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); - - builder.RegisterInstance(appIdentifierService.Object); - builder.RegisterType(); - - var vendorBuilder = new VendorBuilder(builder, new JieStarVendor()); - - // Act - var deviceBuilder = vendorBuilder.RegisterDevice(); - var container = builder.Build(); - - // Assert - deviceBuilder.Should().BeOfType>(); - - string name = "TestDevice"; - byte[] deviceData = [1, 2, 3]; - - Action act = () => container.ResolveKeyed(DeviceType.JieStarSCM8, - new NamedParameter(nameof(name), name), - new NamedParameter(nameof(address), address), - new NamedParameter(nameof(deviceData), deviceData)); - - act.Should().Throw() - .WithInnerException() - .WithInnerException() - .Which.ParamName.Should().Be(nameof(address)); - } - - [Theory] - [InlineData("Device")] // The address is not relevant for this device - [InlineData("IllegalDevice")] // The address is not relevant for this device - public void RegisterDevice_MK3_8_ReturnedDevice(string address) - { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); - - builder.RegisterInstance(appIdentifierService.Object); - builder.RegisterType() - .As() - .SingleInstance(); - - var vendorBuilder = new VendorBuilder(builder, new MouldKingVendor()); - - // Act - var deviceBuilder = vendorBuilder.RegisterDevice(); - var container = builder.Build(); - - // Assert - deviceBuilder.Should().BeOfType>(); - - string name = "TestDevice"; - byte[] deviceData = [1, 2, 3]; - var device = container.ResolveKeyed(DeviceType.MK3_8, - new NamedParameter(nameof(name), name), - new NamedParameter(nameof(address), address), - new NamedParameter(nameof(deviceData), deviceData)); - - device.Should().NotBeNull(); - device.Should().BeOfType(); - } - - [Theory] - [InlineData("Device")] - [InlineData("IllegalDevice")] - public void RegisterDevice_MK4_IllegalDevice(string address) - { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); - - builder.RegisterInstance(appIdentifierService.Object); - builder.RegisterType() - .As() - .SingleInstance(); - - var vendorBuilder = new VendorBuilder(builder, new MouldKingVendor()); - - // Act - var deviceBuilder = vendorBuilder.RegisterDevice(); - var container = builder.Build(); - - // Assert - deviceBuilder.Should().BeOfType>(); - - string name = "TestDevice"; - byte[] deviceData = [1, 2, 3]; - - Action act = () => container.ResolveKeyed(DeviceType.MK4, - new NamedParameter(nameof(name), name), - new NamedParameter(nameof(address), address), - new NamedParameter(nameof(deviceData), deviceData)); - - act.Should().Throw() - .WithInnerException() - .WithInnerException() - .Which.ParamName.Should().Be(nameof(address)); - } - - [Theory] - [InlineData("Device1")] - [InlineData("Device2")] - [InlineData("Device3")] - public void RegisterDevice_MK4_ReturnedDevice(string address) - { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); - - builder.RegisterInstance(appIdentifierService.Object); - builder.RegisterType() - .As() - .SingleInstance(); - - var vendorBuilder = new VendorBuilder(builder, new MouldKingVendor()); - - // Act - var deviceBuilder = vendorBuilder.RegisterDevice(); - var container = builder.Build(); - - // Assert - deviceBuilder.Should().BeOfType>(); - - string name = "TestDevice"; - byte[] deviceData = [1, 2, 3]; - var device = container.ResolveKeyed(DeviceType.MK4, - new NamedParameter(nameof(name), name), - new NamedParameter(nameof(address), address), - new NamedParameter(nameof(deviceData), deviceData)); - - device.Should().NotBeNull(); - device.Should().BeOfType(); - } - - [Theory] - [InlineData("Device")] // The address is not relevant for this device - [InlineData("IllegalDevice")] // The address is not relevant for this device - public void RegisterDevice_MK5_ReturnedDevice(string address) - { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); - - builder.RegisterInstance(appIdentifierService.Object); - builder.RegisterType() - .As() - .SingleInstance(); - - var vendorBuilder = new VendorBuilder(builder, new MouldKingVendor()); - - // Act - var deviceBuilder = vendorBuilder.RegisterDevice(); - var container = builder.Build(); - - // Assert - deviceBuilder.Should().BeOfType>(); - - string name = "TestDevice"; - byte[] deviceData = [1, 2, 3]; - var device = container.ResolveKeyed(DeviceType.MK5, - new NamedParameter(nameof(name), name), - new NamedParameter(nameof(address), address), - new NamedParameter(nameof(deviceData), deviceData)); - - device.Should().NotBeNull(); - device.Should().BeOfType(); - } - - [Theory] - [InlineData("Device1")] - [InlineData("Device2")] - [InlineData("Device3")] - public void RegisterDevice_MK6_ReturnedDevice(string address) - { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); - - builder.RegisterInstance(appIdentifierService.Object); - builder.RegisterType() - .As() - .SingleInstance(); - - var vendorBuilder = new VendorBuilder(builder, new MouldKingVendor()); - - // Act - var deviceBuilder = vendorBuilder.RegisterDevice(); - var container = builder.Build(); - - // Assert - deviceBuilder.Should().BeOfType>(); - - string name = "TestDevice"; - byte[] deviceData = [1, 2, 3]; - var device = container.ResolveKeyed(DeviceType.MK6, - new NamedParameter(nameof(name), name), - new NamedParameter(nameof(address), address), - new NamedParameter(nameof(deviceData), deviceData)); - - device.Should().NotBeNull(); - device.Should().BeOfType(); - } - - [Theory] - [InlineData("Device")] - [InlineData("IllegalDevice")] - public void RegisterDevice_MK6_IllegalDevice(string address) - { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); - - builder.RegisterInstance(appIdentifierService.Object); - builder.RegisterType() - .As() - .SingleInstance(); - - var vendorBuilder = new VendorBuilder(builder, new MouldKingVendor()); - - // Act - var deviceBuilder = vendorBuilder.RegisterDevice(); - var container = builder.Build(); - - // Assert - deviceBuilder.Should().BeOfType>(); - - string name = "TestDevice"; - byte[] deviceData = [1, 2, 3]; - - Action act = () => container.ResolveKeyed(DeviceType.MK6, - new NamedParameter(nameof(name), name), - new NamedParameter(nameof(address), address), - new NamedParameter(nameof(deviceData), deviceData)); - - act.Should().Throw() - .WithInnerException() - .WithInnerException() - .Which.ParamName.Should().Be(nameof(address)); - } -} From a17d5914eb5a9aef2d1a28034c8a70dd8ceda3a5 Mon Sep 17 00:00:00 2001 From: J0EK3R Date: Mon, 6 Jul 2026 12:08:56 +0200 Subject: [PATCH 2/8] added UnitTest MouldKingVendorTests.RegisterDevice_MKDIY_ReturnedDevice --- .../DeviceManagement/DI/MouldKingVendorTests.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs index 19ff82fd..ee393dc9 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs @@ -143,4 +143,18 @@ public void RegisterDevice_MK6_IllegalDevice(string address) .WithInnerException() .Which.ParamName.Should().Be(nameof(address)); } + + [Theory] + [InlineData("MK_DIY_Address")] + public void RegisterDevice_MKDIY_ReturnedDevice(string address) + { + DeviceType deviceType = DeviceType.MK_DIY; + string name = "TestDevice"; + byte[] deviceData = [1, 2, 3]; + + var device = _deviceFactory(deviceType, name, address, deviceData, []); + + device.Should().NotBeNull(); + device.Should().BeOfType(); + } } From 20bbb940a6f36863184dd685445074c5386913d5 Mon Sep 17 00:00:00 2001 From: J0EK3R Date: Mon, 6 Jul 2026 13:22:36 +0200 Subject: [PATCH 3/8] added UnitTests for vendor CaDA --- .../DeviceManagement/DI/CaDAVendorTests.cs | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs new file mode 100644 index 00000000..b7cb24c9 --- /dev/null +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs @@ -0,0 +1,82 @@ +using Autofac; +using BrickController2.DeviceManagement; +using BrickController2.DeviceManagement.DI; +using BrickController2.DeviceManagement.CaDA; +using BrickController2.PlatformServices.BluetoothLE; +using BrickController2.UI.Services.AppIdentifier; +using FluentAssertions; +using Moq; +using System; +using Xunit; +using CaDAVendor = BrickController2.DeviceManagement.CaDA.CaDA; + +namespace BrickController2.Tests.DeviceManagement.DI; + +public class CaDAVendorTests +{ + private DeviceFactory _deviceFactory; + + public CaDAVendorTests() + { + // Arrange + var builder = new ContainerBuilder(); + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); + + Mock appIdentifierService = new(); + appIdentifierService.Setup(x => x.GetAppId(3)).Returns(new byte[] { 0x01, 0x02, 0x03 }); // CaDA needs an AppId of 3 Bytes + + builder.RegisterInstance(appIdentifierService.Object); + + builder.Register(c => + { + IComponentContext ctx = c.Resolve(); + return (deviceType, name, address, deviceData, settings) => ctx.ResolveOptionalKeyed(deviceType, + new NamedParameter("name", name), + new NamedParameter("address", address), + new NamedParameter("deviceData", deviceData), + new NamedParameter("settings", settings)); + }); + + // additional dependencies + builder.RegisterInstance(Random.Shared); + + // execute registration of vendor MouldKing + builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); + + // Act + var container = builder.Build(); + + _deviceFactory = container.Resolve(); + } + + [Theory] + [InlineData("Device", new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 })] // devicedata.Length of 18 + [InlineData("Device_Rev2", new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 })] // devicedata.Length of 16 + public void RegisterDevice_CaDARaceCar_ReturnedDevice(string address, byte[] deviceData) + { + DeviceType deviceType = DeviceType.CaDA_RaceCar; + string name = "TestDevice"; + + var device = _deviceFactory(deviceType, name, address, deviceData, []); + + device.Should().NotBeNull(); + device.Should().BeOfType(); + } + + [Theory] + [InlineData("IllegalDevice", new byte[] { 1, 2, 3, 4 })] // MessageEncoderFactory.Create needs devicedata.Length of 16 or 18 + public void RegisterDevice_CaDARaceCar_IllegalDeviceDataSize(string address, byte[] deviceData) + { + DeviceType deviceType = DeviceType.CaDA_RaceCar; + string name = "TestDevice"; + + Action act = () => _deviceFactory(deviceType, name, address, deviceData, []); + + act.Should().Throw() + .WithInnerException() + .WithInnerException() + .Which.Message.Should().Be("Unsupported device data format."); + } +} From 8ea586f4a8b7a94f19c7e2706f74b3d80c498dba Mon Sep 17 00:00:00 2001 From: J0EK3R Date: Mon, 6 Jul 2026 14:06:56 +0200 Subject: [PATCH 4/8] added UnitTests for vendor PowerFunctions --- .../DI/PowerFunctionsVendorTests.cs | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs new file mode 100644 index 00000000..4dd41b5f --- /dev/null +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs @@ -0,0 +1,60 @@ +using Autofac; +using BrickController2.DeviceManagement; +using BrickController2.DeviceManagement.DI; +using BrickController2.DeviceManagement.PowerFunctions; +using BrickController2.PlatformServices.Infrared; +using BrickController2.UI.Images; +using FluentAssertions; +using Moq; +using Xunit; +using PowerFunctionsVendor = BrickController2.DeviceManagement.PowerFunctions.PowerFunctions; + +namespace BrickController2.Tests.DeviceManagement.DI; + +public class PowerFunctionsVendorTests +{ + private DeviceFactory _deviceFactory; + + public PowerFunctionsVendorTests() + { + // Arrange + var builder = new ContainerBuilder(); + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); // needed cause RegisterDevice().WithImages("powerfunctions_image.png", "powerfunctions_image_small.png") + + builder.Register(c => + { + IComponentContext ctx = c.Resolve(); + return (deviceType, name, address, deviceData, settings) => ctx.ResolveOptionalKeyed(deviceType, + new NamedParameter("name", name), + new NamedParameter("address", address), + new NamedParameter("deviceData", deviceData), + new NamedParameter("settings", settings)); + }); + + // execute registration of vendor MouldKing + builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); + + // Act + var container = builder.Build(); + + _deviceFactory = container.Resolve(); + } + + [Theory] + [InlineData("0", "PF Infra 1")] + [InlineData("1", "PF Infra 2")] + [InlineData("2", "PF Infra 3")] + [InlineData("3", "PF Infra 4")] + public void RegisterDevice_PowerFunctionsDevice_ReturnedDevice(string address, string name) + { + DeviceType deviceType = DeviceType.Infrared; + + var device = _deviceFactory(deviceType, name, address, [], []); + + device.Should().NotBeNull(); + device.Should().BeOfType(); + } +} From 8c56bbae9135c54352d29ea800d1da87dc569c7e Mon Sep 17 00:00:00 2001 From: J0EK3R Date: Wed, 8 Jul 2026 08:30:55 +0200 Subject: [PATCH 5/8] introduced VendorTestsBase --- .../DeviceManagement/DI/CaDAVendorTests.cs | 41 +++++++------------ .../DeviceManagement/DI/JieStarVendorTests.cs | 36 ++++++---------- .../DI/MouldKingVendorTests.cs | 37 ++++++----------- .../DI/PowerFunctionsVendorTests.cs | 35 +++++++--------- .../DeviceManagement/DI/VendorTestsBase.cs | 33 +++++++++++++++ 5 files changed, 89 insertions(+), 93 deletions(-) create mode 100644 BrickController2/BrickController2.Tests/DeviceManagement/DI/VendorTestsBase.cs diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs index b7cb24c9..b64b2cc1 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs @@ -1,9 +1,8 @@ using Autofac; using BrickController2.DeviceManagement; -using BrickController2.DeviceManagement.DI; using BrickController2.DeviceManagement.CaDA; +using BrickController2.DeviceManagement.DI; using BrickController2.PlatformServices.BluetoothLE; -using BrickController2.UI.Services.AppIdentifier; using FluentAssertions; using Moq; using System; @@ -12,43 +11,33 @@ namespace BrickController2.Tests.DeviceManagement.DI; -public class CaDAVendorTests +public class CaDAVendorTests : VendorTestsBase { - private DeviceFactory _deviceFactory; + private readonly DeviceFactory _deviceFactory; public CaDAVendorTests() { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); + // Act + var container = InitializeContainer().Build(); - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(3)).Returns(new byte[] { 0x01, 0x02, 0x03 }); // CaDA needs an AppId of 3 Bytes + _deviceFactory = container.Resolve(); + } - builder.RegisterInstance(appIdentifierService.Object); + protected override ContainerBuilder InitializeContainer() + { + var builder = base.InitializeContainer(); - builder.Register(c => - { - IComponentContext ctx = c.Resolve(); - return (deviceType, name, address, deviceData, settings) => ctx.ResolveOptionalKeyed(deviceType, - new NamedParameter("name", name), - new NamedParameter("address", address), - new NamedParameter("deviceData", deviceData), - new NamedParameter("settings", settings)); - }); + // Arrange + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); // additional dependencies - builder.RegisterInstance(Random.Shared); + builder.RegisterInstance(Random.Shared); // MessageEncoderFactory needs Random.Shared as DI // execute registration of vendor MouldKing builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); - // Act - var container = builder.Build(); - - _deviceFactory = container.Resolve(); + return builder; } [Theory] diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs index 7f415383..791b03be 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs @@ -3,7 +3,6 @@ using BrickController2.DeviceManagement.DI; using BrickController2.DeviceManagement.JieStar; using BrickController2.PlatformServices.BluetoothLE; -using BrickController2.UI.Services.AppIdentifier; using FluentAssertions; using Moq; using System; @@ -12,39 +11,30 @@ namespace BrickController2.Tests.DeviceManagement.DI; -public class JieStarVendorTests +public class JieStarVendorTests : VendorTestsBase { - private DeviceFactory _deviceFactory; + private readonly DeviceFactory _deviceFactory; public JieStarVendorTests() { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); + // Act + var container = InitializeContainer().Build(); - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); + _deviceFactory = container.Resolve(); + } - builder.RegisterInstance(appIdentifierService.Object); + protected override ContainerBuilder InitializeContainer() + { + var builder = base.InitializeContainer(); - builder.Register(c => - { - IComponentContext ctx = c.Resolve(); - return (deviceType, name, address, deviceData, settings) => ctx.ResolveOptionalKeyed(deviceType, - new NamedParameter("name", name), - new NamedParameter("address", address), - new NamedParameter("deviceData", deviceData), - new NamedParameter("settings", settings)); - }); + // Arrange + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); // execute registration of vendor JIESTAR builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); - // Act - var container = builder.Build(); - _deviceFactory = container.Resolve(); + return builder; } [Theory] diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs index ee393dc9..a484e65e 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs @@ -3,7 +3,6 @@ using BrickController2.DeviceManagement.DI; using BrickController2.DeviceManagement.MouldKing; using BrickController2.PlatformServices.BluetoothLE; -using BrickController2.UI.Services.AppIdentifier; using FluentAssertions; using Moq; using System; @@ -12,40 +11,30 @@ namespace BrickController2.Tests.DeviceManagement.DI; -public class MouldKingVendorTests +public class MouldKingVendorTests : VendorTestsBase { - private DeviceFactory _deviceFactory; + private readonly DeviceFactory _deviceFactory; public MouldKingVendorTests() { - // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); + // Act + var container = InitializeContainer().Build(); - Mock appIdentifierService = new(); - appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); + _deviceFactory = container.Resolve(); + } - builder.RegisterInstance(appIdentifierService.Object); + protected override ContainerBuilder InitializeContainer() + { + var builder = base.InitializeContainer(); - builder.Register(c => - { - IComponentContext ctx = c.Resolve(); - return (deviceType, name, address, deviceData, settings) => ctx.ResolveOptionalKeyed(deviceType, - new NamedParameter("name", name), - new NamedParameter("address", address), - new NamedParameter("deviceData", deviceData), - new NamedParameter("settings", settings)); - }); + // Arrange + builder.RegisterInstance(Mock.Of()); + builder.RegisterInstance(Mock.Of()); // execute registration of vendor MouldKing builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); - // Act - var container = builder.Build(); - - _deviceFactory = container.Resolve(); + return builder; } [Theory] diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs index 4dd41b5f..c58b7649 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs @@ -11,38 +11,33 @@ namespace BrickController2.Tests.DeviceManagement.DI; -public class PowerFunctionsVendorTests +public class PowerFunctionsVendorTests : VendorTestsBase { - private DeviceFactory _deviceFactory; + private readonly DeviceFactory _deviceFactory; public PowerFunctionsVendorTests() { + // Act + var container = InitializeContainer().Build(); + + _deviceFactory = container.Resolve(); + } + + protected override ContainerBuilder InitializeContainer() + { + var builder = base.InitializeContainer(); + // Arrange - var builder = new ContainerBuilder(); - builder.RegisterInstance(Mock.Of()); builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); builder.RegisterInstance(Mock.Of()); // needed cause RegisterDevice().WithImages("powerfunctions_image.png", "powerfunctions_image_small.png") - builder.Register(c => - { - IComponentContext ctx = c.Resolve(); - return (deviceType, name, address, deviceData, settings) => ctx.ResolveOptionalKeyed(deviceType, - new NamedParameter("name", name), - new NamedParameter("address", address), - new NamedParameter("deviceData", deviceData), - new NamedParameter("settings", settings)); - }); - - // execute registration of vendor MouldKing + // execute registration of vendor PowerFunctions builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); - // Act - var container = builder.Build(); - - _deviceFactory = container.Resolve(); + return builder; } + [Theory] [InlineData("0", "PF Infra 1")] [InlineData("1", "PF Infra 2")] diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/VendorTestsBase.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/VendorTestsBase.cs new file mode 100644 index 00000000..d0457ef3 --- /dev/null +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/VendorTestsBase.cs @@ -0,0 +1,33 @@ +using Autofac; +using BrickController2.DeviceManagement; +using BrickController2.UI.Services.AppIdentifier; +using Moq; + +namespace BrickController2.Tests.DeviceManagement.DI; + +public class VendorTestsBase +{ + protected virtual ContainerBuilder InitializeContainer() + { + // Arrange + var builder = new ContainerBuilder(); + builder.RegisterInstance(Mock.Of()); + + Mock appIdentifierService = new(); + appIdentifierService.Setup(x => x.GetAppId(2)).Returns(new byte[] { 0x01, 0x02 }); // MouldKing needs an AppId of 2 Bytes + appIdentifierService.Setup(x => x.GetAppId(3)).Returns(new byte[] { 0x01, 0x02, 0x03 }); // CaDA needs an AppId of 3 Bytes + builder.RegisterInstance(appIdentifierService.Object); + + builder.Register(c => + { + IComponentContext ctx = c.Resolve(); + return (deviceType, name, address, deviceData, settings) => ctx.ResolveOptionalKeyed(deviceType, + new NamedParameter("name", name), + new NamedParameter("address", address), + new NamedParameter("deviceData", deviceData), + new NamedParameter("settings", settings)); + }); + + return builder; + } +} From a113ed4b4446dacef79bc4bff11272aac47fc91e Mon Sep 17 00:00:00 2001 From: J0EK3R Date: Wed, 8 Jul 2026 08:34:10 +0200 Subject: [PATCH 6/8] fixed comment "MouldKing" -> "CaDA" --- .../DeviceManagement/DI/CaDAVendorTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs index b64b2cc1..aa4482b5 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs @@ -34,7 +34,7 @@ protected override ContainerBuilder InitializeContainer() // additional dependencies builder.RegisterInstance(Random.Shared); // MessageEncoderFactory needs Random.Shared as DI - // execute registration of vendor MouldKing + // execute registration of vendor CaDA builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); return builder; From a29515b58d22da5841fbfb5ea80a9f9833d990e1 Mon Sep 17 00:00:00 2001 From: J0EK3R Date: Wed, 8 Jul 2026 08:37:08 +0200 Subject: [PATCH 7/8] builder.RegisterAssemblyModules replaced by builder.RegisterModule --- .../DeviceManagement/DI/CaDAVendorTests.cs | 2 +- .../DeviceManagement/DI/JieStarVendorTests.cs | 2 +- .../DeviceManagement/DI/MouldKingVendorTests.cs | 2 +- .../DeviceManagement/DI/PowerFunctionsVendorTests.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs index aa4482b5..ed62dff6 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/CaDAVendorTests.cs @@ -35,7 +35,7 @@ protected override ContainerBuilder InitializeContainer() builder.RegisterInstance(Random.Shared); // MessageEncoderFactory needs Random.Shared as DI // execute registration of vendor CaDA - builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); + builder.RegisterModule(); return builder; } diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs index 791b03be..7bc73089 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/JieStarVendorTests.cs @@ -32,7 +32,7 @@ protected override ContainerBuilder InitializeContainer() builder.RegisterInstance(Mock.Of()); // execute registration of vendor JIESTAR - builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); + builder.RegisterModule(); return builder; } diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs index a484e65e..71e0641f 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/MouldKingVendorTests.cs @@ -32,7 +32,7 @@ protected override ContainerBuilder InitializeContainer() builder.RegisterInstance(Mock.Of()); // execute registration of vendor MouldKing - builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); + builder.RegisterModule(); return builder; } diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs index c58b7649..ddd10599 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs @@ -32,7 +32,7 @@ protected override ContainerBuilder InitializeContainer() builder.RegisterInstance(Mock.Of()); // needed cause RegisterDevice().WithImages("powerfunctions_image.png", "powerfunctions_image_small.png") // execute registration of vendor PowerFunctions - builder.RegisterAssemblyModules(typeof(DeviceManagementModule).Assembly); + builder.RegisterModule(); return builder; } From 2975c31206880bf5f864786b39931f492029c9b5 Mon Sep 17 00:00:00 2001 From: J0EK3R Date: Wed, 8 Jul 2026 08:39:45 +0200 Subject: [PATCH 8/8] fixed typo --- .../DeviceManagement/DI/PowerFunctionsVendorTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs b/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs index ddd10599..04c62b1f 100644 --- a/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs +++ b/BrickController2/BrickController2.Tests/DeviceManagement/DI/PowerFunctionsVendorTests.cs @@ -29,7 +29,7 @@ protected override ContainerBuilder InitializeContainer() // Arrange builder.RegisterInstance(Mock.Of()); - builder.RegisterInstance(Mock.Of()); // needed cause RegisterDevice().WithImages("powerfunctions_image.png", "powerfunctions_image_small.png") + builder.RegisterInstance(Mock.Of()); // needed because RegisterDevice().WithImages("powerfunctions_image.png", "powerfunctions_image_small.png") // execute registration of vendor PowerFunctions builder.RegisterModule();