public async void GetImage_NoStreams_ReturnsNoImage() { var input = new Movie(); var mediaSourceManager = GetMediaSourceManager(input, new List <MediaAttachment>(), new List <MediaStream>()); var embeddedImageProvider = new EmbeddedImageProvider(mediaSourceManager, null, new NullLogger <EmbeddedImageProvider>()); var actual = await embeddedImageProvider.GetImage(input, ImageType.Primary, CancellationToken.None); Assert.NotNull(actual); Assert.False(actual.HasImage); }
public async void GetImage_Embedded_ReturnsCorrectSelection(string label, string?codec, int targetIndex, ImageType type, ImageFormat?expectedFormat) { var streams = new List <MediaStream>(); for (int i = 1; i <= targetIndex; i++) { var comment = i == targetIndex ? label : "unmatched"; streams.Add(new () { Type = MediaStreamType.EmbeddedImage, Index = i, Comment = comment, Codec = codec }); } var input = new Movie(); var pathPrefix = "path"; var mediaEncoder = new Mock <IMediaEncoder>(MockBehavior.Strict); mediaEncoder.Setup(encoder => encoder.ExtractVideoImage(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MediaSourceInfo>(), It.IsAny <MediaStream>(), It.IsAny <int>(), It.IsAny <ImageFormat>(), It.IsAny <CancellationToken>())) .Returns <string, string, MediaSourceInfo, MediaStream, int, ImageFormat, CancellationToken>((_, _, _, stream, index, ext, _) => { Assert.Equal(streams[index - 1], stream); return(Task.FromResult(pathPrefix + index + "." + ext)); }); var mediaSourceManager = GetMediaSourceManager(input, new List <MediaAttachment>(), streams); var embeddedImageProvider = new EmbeddedImageProvider(mediaSourceManager, mediaEncoder.Object, new NullLogger <EmbeddedImageProvider>()); var actual = await embeddedImageProvider.GetImage(input, type, CancellationToken.None); Assert.NotNull(actual); if (expectedFormat == null) { Assert.False(actual.HasImage); } else { Assert.True(actual.HasImage); Assert.Equal(pathPrefix + targetIndex + "." + expectedFormat, actual.Path, StringComparer.OrdinalIgnoreCase); Assert.Equal(expectedFormat, actual.Format); } }
[InlineData("poster", null, 3, ImageType.Primary, ImageFormat.Jpg)] // default extension to jpg public async void GetImage_Attachment_ReturnsCorrectSelection(string filename, string mimetype, int targetIndex, ImageType type, ImageFormat?expectedFormat) { var attachments = new List <MediaAttachment>(); string pathPrefix = "path"; for (int i = 1; i <= targetIndex; i++) { var name = i == targetIndex ? filename : "unmatched"; attachments.Add(new () { FileName = name, MimeType = mimetype, Index = i }); } var input = new Movie(); var mediaEncoder = new Mock <IMediaEncoder>(MockBehavior.Strict); mediaEncoder.Setup(encoder => encoder.ExtractVideoImage(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MediaSourceInfo>(), It.IsAny <MediaStream>(), It.IsAny <int>(), It.IsAny <ImageFormat>(), It.IsAny <CancellationToken>())) .Returns <string, string, MediaSourceInfo, MediaStream, int, ImageFormat, CancellationToken>((_, _, _, _, index, ext, _) => Task.FromResult(pathPrefix + index + "." + ext)); var mediaSourceManager = GetMediaSourceManager(input, attachments, new List <MediaStream>()); var embeddedImageProvider = new EmbeddedImageProvider(mediaSourceManager, mediaEncoder.Object, new NullLogger <EmbeddedImageProvider>()); var actual = await embeddedImageProvider.GetImage(input, type, CancellationToken.None); Assert.NotNull(actual); if (expectedFormat == null) { Assert.False(actual.HasImage); } else { Assert.True(actual.HasImage); Assert.Equal(pathPrefix + targetIndex + "." + expectedFormat, actual.Path, StringComparer.OrdinalIgnoreCase); Assert.Equal(expectedFormat, actual.Format); } }