|
|
|
|
@ -1,6 +1,9 @@
@@ -1,6 +1,9 @@
|
|
|
|
|
using System; |
|
|
|
|
using ErsatzTV.Core.FFmpeg; |
|
|
|
|
using ErsatzTV.Core.Interfaces.FFmpeg; |
|
|
|
|
using FluentAssertions; |
|
|
|
|
using Microsoft.Extensions.Logging; |
|
|
|
|
using Moq; |
|
|
|
|
using NUnit.Framework; |
|
|
|
|
|
|
|
|
|
namespace ErsatzTV.Core.Tests.FFmpeg |
|
|
|
|
@ -8,8 +11,19 @@ namespace ErsatzTV.Core.Tests.FFmpeg
@@ -8,8 +11,19 @@ namespace ErsatzTV.Core.Tests.FFmpeg
|
|
|
|
|
[TestFixture] |
|
|
|
|
public class HlsPlaylistFilterTests |
|
|
|
|
{ |
|
|
|
|
private HlsPlaylistFilter _hlsPlaylistFilter; |
|
|
|
|
|
|
|
|
|
[SetUp] |
|
|
|
|
public void SetUp() |
|
|
|
|
{ |
|
|
|
|
_hlsPlaylistFilter = new HlsPlaylistFilter( |
|
|
|
|
new Mock<ITempFilePool>().Object, |
|
|
|
|
new Mock<ILogger<HlsPlaylistFilter>>().Object |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[Test] |
|
|
|
|
public void HlsPlaylistFilter_ShouldRewriteProgramDateTime() |
|
|
|
|
public void _hlsPlaylistFilter_ShouldRewriteProgramDateTime() |
|
|
|
|
{ |
|
|
|
|
var start = new DateTimeOffset(2021, 10, 9, 8, 0, 0, TimeSpan.FromHours(-5)); |
|
|
|
|
string[] input = NormalizeLineEndings(@"#EXTM3U
|
|
|
|
|
@ -28,7 +42,7 @@ live001138.ts
@@ -28,7 +42,7 @@ live001138.ts
|
|
|
|
|
#EXT-X-PROGRAM-DATE-TIME:2021-10-08T08:34:57.320-0500 |
|
|
|
|
live001139.ts").Split(Environment.NewLine);
|
|
|
|
|
|
|
|
|
|
TrimPlaylistResult result = HlsPlaylistFilter.TrimPlaylist(start, start.AddSeconds(-30), input); |
|
|
|
|
TrimPlaylistResult result = _hlsPlaylistFilter.TrimPlaylist(start, start.AddSeconds(-30), input); |
|
|
|
|
|
|
|
|
|
result.PlaylistStart.Should().Be(start); |
|
|
|
|
result.Sequence.Should().Be(1137); |
|
|
|
|
@ -53,7 +67,7 @@ live001139.ts
@@ -53,7 +67,7 @@ live001139.ts
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[Test] |
|
|
|
|
public void HlsPlaylistFilter_ShouldLimitSegments() |
|
|
|
|
public void _hlsPlaylistFilter_ShouldLimitSegments() |
|
|
|
|
{ |
|
|
|
|
var start = new DateTimeOffset(2021, 10, 9, 8, 0, 0, TimeSpan.FromHours(-5)); |
|
|
|
|
string[] input = NormalizeLineEndings(@"#EXTM3U
|
|
|
|
|
@ -72,7 +86,7 @@ live001138.ts
@@ -72,7 +86,7 @@ live001138.ts
|
|
|
|
|
#EXT-X-PROGRAM-DATE-TIME:2021-10-08T08:34:57.320-0500 |
|
|
|
|
live001139.ts").Split(Environment.NewLine);
|
|
|
|
|
|
|
|
|
|
TrimPlaylistResult result = HlsPlaylistFilter.TrimPlaylist(start, start.AddSeconds(-30), input, 2); |
|
|
|
|
TrimPlaylistResult result = _hlsPlaylistFilter.TrimPlaylist(start, start.AddSeconds(-30), input, 2); |
|
|
|
|
|
|
|
|
|
result.PlaylistStart.Should().Be(start); |
|
|
|
|
result.Sequence.Should().Be(1137); |
|
|
|
|
@ -94,7 +108,7 @@ live001138.ts
@@ -94,7 +108,7 @@ live001138.ts
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[Test] |
|
|
|
|
public void HlsPlaylistFilter_ShouldAddDiscontinuity() |
|
|
|
|
public void _hlsPlaylistFilter_ShouldAddDiscontinuity() |
|
|
|
|
{ |
|
|
|
|
var start = new DateTimeOffset(2021, 10, 9, 8, 0, 0, TimeSpan.FromHours(-5)); |
|
|
|
|
string[] input = NormalizeLineEndings(@"#EXTM3U
|
|
|
|
|
@ -113,7 +127,7 @@ live001138.ts
@@ -113,7 +127,7 @@ live001138.ts
|
|
|
|
|
#EXT-X-PROGRAM-DATE-TIME:2021-10-08T08:34:57.320-0500 |
|
|
|
|
live001139.ts").Split(Environment.NewLine);
|
|
|
|
|
|
|
|
|
|
TrimPlaylistResult result = HlsPlaylistFilter.TrimPlaylist( |
|
|
|
|
TrimPlaylistResult result = _hlsPlaylistFilter.TrimPlaylist( |
|
|
|
|
start, |
|
|
|
|
start.AddSeconds(-30), |
|
|
|
|
input, |
|
|
|
|
@ -144,7 +158,7 @@ live001139.ts
@@ -144,7 +158,7 @@ live001139.ts
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[Test] |
|
|
|
|
public void HlsPlaylistFilter_ShouldFilterOldSegments() |
|
|
|
|
public void _hlsPlaylistFilter_ShouldFilterOldSegments() |
|
|
|
|
{ |
|
|
|
|
var start = new DateTimeOffset(2021, 10, 9, 8, 0, 0, TimeSpan.FromHours(-5)); |
|
|
|
|
string[] input = NormalizeLineEndings(@"#EXTM3U
|
|
|
|
|
@ -163,7 +177,7 @@ live001138.ts
@@ -163,7 +177,7 @@ live001138.ts
|
|
|
|
|
#EXT-X-PROGRAM-DATE-TIME:2021-10-08T08:34:57.320-0500 |
|
|
|
|
live001139.ts").Split(Environment.NewLine);
|
|
|
|
|
|
|
|
|
|
TrimPlaylistResult result = HlsPlaylistFilter.TrimPlaylist(start, start.AddSeconds(6), input); |
|
|
|
|
TrimPlaylistResult result = _hlsPlaylistFilter.TrimPlaylist(start, start.AddSeconds(6), input); |
|
|
|
|
|
|
|
|
|
result.PlaylistStart.Should().Be(start.AddSeconds(8)); |
|
|
|
|
result.Sequence.Should().Be(1139); |
|
|
|
|
@ -182,7 +196,7 @@ live001139.ts
@@ -182,7 +196,7 @@ live001139.ts
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[Test] |
|
|
|
|
public void HlsPlaylistFilter_ShouldFilterOldDiscontinuity() |
|
|
|
|
public void _hlsPlaylistFilter_ShouldFilterOldDiscontinuity() |
|
|
|
|
{ |
|
|
|
|
var start = new DateTimeOffset(2021, 10, 9, 8, 0, 0, TimeSpan.FromHours(-5)); |
|
|
|
|
string[] input = NormalizeLineEndings(@"#EXTM3U
|
|
|
|
|
@ -202,7 +216,7 @@ live001138.ts
@@ -202,7 +216,7 @@ live001138.ts
|
|
|
|
|
#EXT-X-PROGRAM-DATE-TIME:2021-10-08T08:34:57.320-0500 |
|
|
|
|
live001139.ts").Split(Environment.NewLine);
|
|
|
|
|
|
|
|
|
|
TrimPlaylistResult result = HlsPlaylistFilter.TrimPlaylist(start, start.AddSeconds(6), input); |
|
|
|
|
TrimPlaylistResult result = _hlsPlaylistFilter.TrimPlaylist(start, start.AddSeconds(6), input); |
|
|
|
|
|
|
|
|
|
result.PlaylistStart.Should().Be(start.AddSeconds(8)); |
|
|
|
|
result.Sequence.Should().Be(1139); |
|
|
|
|
|