using Emby.Dlna; using Emby.Dlna.PlayTo; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.IO; using MediaBrowser.Model.Serialization; using Microsoft.Extensions.Logging; using Moq; using Xunit; namespace Jellyfin.Dlna.Tests { public class DlnaManagerTests { private DlnaManager GetManager() { var xmlSerializer = new Mock(); var fileSystem = new Mock(); var appPaths = new Mock(); var loggerFactory = new Mock(); var appHost = new Mock(); return new DlnaManager(xmlSerializer.Object, fileSystem.Object, appPaths.Object, loggerFactory.Object, appHost.Object); } [Fact] public void IsMatch_GivenMatchingName_ReturnsTrue() { var device = new DeviceInfo() { Name = "My Device", Manufacturer = "LG Electronics", ManufacturerUrl = "http://www.lge.com", ModelDescription = "LG WebOSTV DMRplus", ModelName = "LG TV", ModelNumber = "1.0", }; var profile = new DeviceProfile() { Name = "Test Profile", FriendlyName = "My Device", Manufacturer = "LG Electronics", ManufacturerUrl = "http://www.lge.com", ModelDescription = "LG WebOSTV DMRplus", ModelName = "LG TV", ModelNumber = "1.0", Identification = new() { FriendlyName = "My Device", Manufacturer = "LG Electronics", ManufacturerUrl = "http://www.lge.com", ModelDescription = "LG WebOSTV DMRplus", ModelName = "LG TV", ModelNumber = "1.0", } }; var profile2 = new DeviceProfile() { Name = "Test Profile", FriendlyName = "My Device", Identification = new DeviceIdentification() { FriendlyName = "My Device", } }; var deviceMatch = GetManager().IsMatch(device.ToDeviceIdentification(), profile2.Identification); var deviceMatch2 = GetManager().IsMatch(device.ToDeviceIdentification(), profile.Identification); Assert.True(deviceMatch); Assert.True(deviceMatch2); } [Fact] public void IsMatch_GivenNamesAndManufacturersDoNotMatch_ReturnsFalse() { var device = new DeviceInfo() { Name = "My Device", Manufacturer = "JVC" }; var profile = new DeviceProfile() { Name = "Test Profile", FriendlyName = "My Device", Manufacturer = "LG Electronics", ManufacturerUrl = "http://www.lge.com", ModelDescription = "LG WebOSTV DMRplus", ModelName = "LG TV", ModelNumber = "1.0", Identification = new() { FriendlyName = "My Device", Manufacturer = "LG Electronics", ManufacturerUrl = "http://www.lge.com", ModelDescription = "LG WebOSTV DMRplus", ModelName = "LG TV", ModelNumber = "1.0", } }; var deviceMatch = GetManager().IsMatch(device.ToDeviceIdentification(), profile.Identification); Assert.False(deviceMatch); } [Fact] public void IsMatch_GivenNamesAndRegExMatch_ReturnsTrue() { var device = new DeviceInfo() { Name = "My Device" }; var profile = new DeviceProfile() { Name = "Test Profile", FriendlyName = "My .*", Identification = new() }; var deviceMatch = GetManager().IsMatch(device.ToDeviceIdentification(), profile.Identification); Assert.True(deviceMatch); } } }