jellyfin-server/tests/Jellyfin.Naming.Tests/EpisodePathParserTest.cs
Narfinger 4a20260a27 add another parser case and allow parsing of seasonless
Add another parser case and we now allow parsing of seasonless series which hopefully should cover more cases of directory structure
2019-10-22 15:46:35 +09:00

54 lines
2.1 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

namespace Emby.Naming.TV
{
using Emby.Naming.Common;
using Xunit;
public class EpisodePathParserTest
{
[Theory]
[InlineData("/media/Foo/Foo-S01E01", "Foo", 1, 1)]
[InlineData("/media/Foo - S04E011", "Foo", 4, 11)]
[InlineData("/media/Foo/Foo s01x01", "Foo", 1, 1)]
[InlineData("/media/Foo (2019)/Season 4/Foo (2019).S04E03", "Foo (2019)", 4, 3)]
public void ParseEpisodesCorrectly(string path, string name, int season, int episode)
{
NamingOptions o = new NamingOptions();
EpisodePathParser p = new EpisodePathParser(o);
var res = p.Parse(path, false);
Assert.True(res.Success);
Assert.Equal(name, res.SeriesName);
Assert.Equal(season, res.SeasonNumber);
Assert.Equal(episode, res.EpisodeNumber);
//testing other paths delimeter
var res2 = p.Parse(path.Replace("/", "\\"), false);
Assert.True(res2.Success);
Assert.Equal(name, res2.SeriesName);
Assert.Equal(season, res2.SeasonNumber);
Assert.Equal(episode, res2.EpisodeNumber);
}
[Theory]
[InlineData("/media/Foo/Foo 889", "Foo", 889)]
[InlineData("/media/Foo/[Bar] Foo Baz - 11 [1080p]", "Foo Baz", 11)]
public void ParseEpisodeWithoutSeason(string path, string name, int episode)
{
NamingOptions o = new NamingOptions();
EpisodePathParser p = new EpisodePathParser(o);
var res = p.Parse(path, true, null, null, true);
Assert.True(res.Success);
Assert.Equal(name, res.SeriesName);
Assert.True(res.SeasonNumber == null);
Assert.Equal(episode, res.EpisodeNumber);
//testing other paths delimeter
var res2 = p.Parse(path.Replace("/", "\\"), false, null, null, true);
Assert.True(res2.Success);
Assert.Equal(name, res2.SeriesName);
Assert.True(res2.SeasonNumber == null);
Assert.Equal(episode, res2.EpisodeNumber);
}
}
}