| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | using System;using System.Collections.Generic;using Emby.Naming.AudioBook;using Emby.Naming.Common;using Xunit;namespace Jellyfin.Naming.Tests.AudioBook{    public class AudioBookResolverTests    {        private readonly NamingOptions _namingOptions = new NamingOptions();        public static IEnumerable<object[]> GetResolveFileTestData()        {            yield return new object[]            {                new AudioBookFileInfo(                    @"/server/AudioBooks/Larry Potter/Larry Potter.mp3",                    "mp3")            };            yield return new object[]            {                new AudioBookFileInfo(                    @"/server/AudioBooks/Berry Potter/Chapter 1 .ogg",                    "ogg",                    chapterNumber: 1)            };            yield return new object[]            {                new AudioBookFileInfo(                    @"/server/AudioBooks/Nerry Potter/Part 3 - Chapter 2.mp3",                    "mp3",                    chapterNumber: 2,                    partNumber: 3)            };        }        [Theory]        [MemberData(nameof(GetResolveFileTestData))]        public void Resolve_ValidFileName_Success(AudioBookFileInfo expectedResult)        {            var result = new AudioBookResolver(_namingOptions).Resolve(expectedResult.Path);            Assert.NotNull(result);            Assert.Equal(result!.Path, expectedResult.Path);            Assert.Equal(result!.Container, expectedResult.Container);            Assert.Equal(result!.ChapterNumber, expectedResult.ChapterNumber);            Assert.Equal(result!.PartNumber, expectedResult.PartNumber);        }        [Fact]        public void Resolve_InvalidExtension()        {            var result = new AudioBookResolver(_namingOptions).Resolve(@"/server/AudioBooks/Larry Potter/Larry Potter.mp9");            Assert.Null(result);        }        [Fact]        public void Resolve_EmptyFileName()        {            var result = new AudioBookResolver(_namingOptions).Resolve(string.Empty);            Assert.Null(result);        }    }}
 |