-
Notifications
You must be signed in to change notification settings - Fork 12
/
MultiEpisodeTests.cs
106 lines (92 loc) · 7.26 KB
/
MultiEpisodeTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
using MediaBrowser.Naming.Common;
using MediaBrowser.Naming.TV;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace MediaBrowser.Naming.Tests.TV
{
[TestClass]
public class MultiEpisodeTests
{
[TestMethod]
public void TestGetEndingEpisodeNumberFromFile()
{
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\4x01 – 20 Hours in America (1).mkv"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\01x02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\S01x02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\S01E02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\S01xE02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\seriesname 01x02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\seriesname S01x02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\seriesname S01E02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\seriesname S01xE02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2\02x03 - 04 Ep Name.mp4"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2\My show name 02x03 - 04 Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2\Elementary - 02x03 - 02x04 - 02x15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2\02x03 - 02x04 - 02x15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2\02x03-04-15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2\Elementary - 02x03-04-15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 02\02x03-E15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 02\Elementary - 02x03-E15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 02\02x03 - x04 - x15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 02\Elementary - 02x03 - x04 - x15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 02\02x03x04x15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 02\Elementary - 02x03x04x15 - Ep Name.mp4"));
Assert.AreEqual(26, GetEndingEpisodeNumberFromFile(@"Season 1\Elementary - S01E23-E24-E26 - The Woman.mp4"));
Assert.AreEqual(26, GetEndingEpisodeNumberFromFile(@"Season 1\S01E23-E24-E26 - The Woman.mp4"));
//Four Digits seasons
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2009\2009x02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2009\S2009x02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2009\S2009E02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2009\S2009xE02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2009\seriesname 2009x02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2009\seriesname S2009x02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2009\seriesname S2009E02 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2009\seriesname S2009xE02 blah.avi"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2009\Elementary - 2009x03 - 2009x04 - 2009x15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2009\2009x03 - 2009x04 - 2009x15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2009\2009x03-04-15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2009\Elementary - 2009x03-04-15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2009\2009x03-E15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2009\Elementary - 2009x03-E15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2009\2009x03 - x04 - x15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2009\Elementary - 2009x03 - x04 - x15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2009\2009x03x04x15 - Ep Name.mp4"));
Assert.AreEqual(15, GetEndingEpisodeNumberFromFile(@"Season 2009\Elementary - 2009x03x04x15 - Ep Name.mp4"));
Assert.AreEqual(26, GetEndingEpisodeNumberFromFile(@"Season 2009\Elementary - S2009E23-E24-E26 - The Woman.mp4"));
Assert.AreEqual(26, GetEndingEpisodeNumberFromFile(@"Season 2009\S2009E23-E24-E26 - The Woman.mp4"));
//Without season number
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\02 - blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2\02 - blah 14 blah.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\02 - blah-02 a.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2\02.avi"));
Assert.AreEqual(3, GetEndingEpisodeNumberFromFile(@"Season 1\02-03 - blah.avi"));
Assert.AreEqual(4, GetEndingEpisodeNumberFromFile(@"Season 2\02-04 - blah 14 blah.avi"));
Assert.AreEqual(5, GetEndingEpisodeNumberFromFile(@"Season 1\02-05 - blah-02 a.avi"));
Assert.AreEqual(4, GetEndingEpisodeNumberFromFile(@"Season 2\02-04.avi"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 2\[HorribleSubs] Hunter X Hunter - 136 [720p].mkv"));
// With format specification that must not be detected as ending episode number
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\series-s09e14-1080p.mkv"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\series-s09e14-720p.mkv"));
Assert.AreEqual(null, GetEndingEpisodeNumberFromFile(@"Season 1\series-s09e14-720i.mkv"));
Assert.AreEqual(4, GetEndingEpisodeNumberFromFile(@"Season 1\MOONLIGHTING_s01e01-e04.mkv"));
}
[TestMethod]
public void TestGetEndingEpisodeNumberFromFolder()
{
Assert.AreEqual(4, GetEndingEpisodeNumberFromFolder(@"Season 1\MOONLIGHTING_s01e01-e04"));
}
private int? GetEndingEpisodeNumberFromFolder(string path)
{
var options = new ExtendedNamingOptions();
var result = new EpisodePathParser(options, new RegexProvider())
.Parse(path, true, true);
return result.EndingEpsiodeNumber;
}
private int? GetEndingEpisodeNumberFromFile(string path)
{
var options = new ExtendedNamingOptions();
var result = new EpisodePathParser(options, new RegexProvider())
.Parse(path, false, true);
return result.EndingEpsiodeNumber;
}
}
}