|
|
|
@ -75,4 +75,106 @@ public class FillerExpressionTests |
|
|
|
result[1].EndTime.ShouldBe(TimeSpan.FromMinutes(20)); |
|
|
|
result[1].EndTime.ShouldBe(TimeSpan.FromMinutes(20)); |
|
|
|
result[2].EndTime.ShouldBe(TimeSpan.FromMinutes(30)); |
|
|
|
result[2].EndTime.ShouldBe(TimeSpan.FromMinutes(30)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Test] |
|
|
|
|
|
|
|
public void Match_Case_Insensitive_Titles_Expression() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// 30 min content
|
|
|
|
|
|
|
|
var playoutItem = new PlayoutItem { Start = DateTimeOffset.Now.UtcDateTime }; |
|
|
|
|
|
|
|
playoutItem.Finish = playoutItem.Start + TimeSpan.FromMinutes(30); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// chapters every 5 min
|
|
|
|
|
|
|
|
var chapters = new List<MediaChapter> |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
new() { ChapterId = 1, StartTime = TimeSpan.Zero, EndTime = TimeSpan.FromMinutes(5), Title = "Not Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 2, StartTime = TimeSpan.FromMinutes(5), EndTime = TimeSpan.FromMinutes(10), Title = "Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 3, StartTime = TimeSpan.FromMinutes(10), EndTime = TimeSpan.FromMinutes(15), Title = "Not Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 4, StartTime = TimeSpan.FromMinutes(15), EndTime = TimeSpan.FromMinutes(20), Title = "Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 5, StartTime = TimeSpan.FromMinutes(20), EndTime = TimeSpan.FromMinutes(25), Title = "Not Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 6, StartTime = TimeSpan.FromMinutes(25), EndTime = TimeSpan.FromMinutes(30), Title = "Here" } |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var fillerPreset = new FillerPreset |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
FillerKind = FillerKind.MidRoll, |
|
|
|
|
|
|
|
Expression = |
|
|
|
|
|
|
|
"title == 'here'" |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<MediaChapter> result = FillerExpression.FilterChapters(fillerPreset.Expression, chapters, playoutItem); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.Count.ShouldBe(3); |
|
|
|
|
|
|
|
result[0].EndTime.ShouldBe(TimeSpan.FromMinutes(10)); |
|
|
|
|
|
|
|
result[1].EndTime.ShouldBe(TimeSpan.FromMinutes(20)); |
|
|
|
|
|
|
|
result[2].EndTime.ShouldBe(TimeSpan.FromMinutes(30)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Test] |
|
|
|
|
|
|
|
public void Exclude_Case_Insensitive_Titles_Expression() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// 30 min content
|
|
|
|
|
|
|
|
var playoutItem = new PlayoutItem { Start = DateTimeOffset.Now.UtcDateTime }; |
|
|
|
|
|
|
|
playoutItem.Finish = playoutItem.Start + TimeSpan.FromMinutes(30); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// chapters every 5 min
|
|
|
|
|
|
|
|
var chapters = new List<MediaChapter> |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
new() { ChapterId = 1, StartTime = TimeSpan.Zero, EndTime = TimeSpan.FromMinutes(5), Title = "Not Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 2, StartTime = TimeSpan.FromMinutes(5), EndTime = TimeSpan.FromMinutes(10), Title = "Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 3, StartTime = TimeSpan.FromMinutes(10), EndTime = TimeSpan.FromMinutes(15), Title = "Not Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 4, StartTime = TimeSpan.FromMinutes(15), EndTime = TimeSpan.FromMinutes(20), Title = "Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 5, StartTime = TimeSpan.FromMinutes(20), EndTime = TimeSpan.FromMinutes(25), Title = "Not Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 6, StartTime = TimeSpan.FromMinutes(25), EndTime = TimeSpan.FromMinutes(30), Title = "Here" } |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var fillerPreset = new FillerPreset |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
FillerKind = FillerKind.MidRoll, |
|
|
|
|
|
|
|
Expression = |
|
|
|
|
|
|
|
"title != 'not here'" |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<MediaChapter> result = FillerExpression.FilterChapters(fillerPreset.Expression, chapters, playoutItem); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.Count.ShouldBe(3); |
|
|
|
|
|
|
|
result[0].EndTime.ShouldBe(TimeSpan.FromMinutes(10)); |
|
|
|
|
|
|
|
result[1].EndTime.ShouldBe(TimeSpan.FromMinutes(20)); |
|
|
|
|
|
|
|
result[2].EndTime.ShouldBe(TimeSpan.FromMinutes(30)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Test] |
|
|
|
|
|
|
|
public void Include_Partial_Case_Insensitive_Titles_Expression() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// 30 min content
|
|
|
|
|
|
|
|
var playoutItem = new PlayoutItem { Start = DateTimeOffset.Now.UtcDateTime }; |
|
|
|
|
|
|
|
playoutItem.Finish = playoutItem.Start + TimeSpan.FromMinutes(30); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// chapters every 5 min
|
|
|
|
|
|
|
|
var chapters = new List<MediaChapter> |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
new() { ChapterId = 1, StartTime = TimeSpan.Zero, EndTime = TimeSpan.FromMinutes(5), Title = "Not Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 2, StartTime = TimeSpan.FromMinutes(5), EndTime = TimeSpan.FromMinutes(10), Title = "Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 3, StartTime = TimeSpan.FromMinutes(10), EndTime = TimeSpan.FromMinutes(15), Title = "Not Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 4, StartTime = TimeSpan.FromMinutes(15), EndTime = TimeSpan.FromMinutes(20), Title = "Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 5, StartTime = TimeSpan.FromMinutes(20), EndTime = TimeSpan.FromMinutes(25), Title = "Not Here" }, |
|
|
|
|
|
|
|
new() { ChapterId = 6, StartTime = TimeSpan.FromMinutes(25), EndTime = TimeSpan.FromMinutes(30), Title = "Here" } |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var fillerPreset = new FillerPreset |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
FillerKind = FillerKind.MidRoll, |
|
|
|
|
|
|
|
Expression = |
|
|
|
|
|
|
|
"title like \"%here%\"" |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<MediaChapter> result = FillerExpression.FilterChapters(fillerPreset.Expression, chapters, playoutItem); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.Count.ShouldBe(6); |
|
|
|
|
|
|
|
result[0].EndTime.ShouldBe(TimeSpan.FromMinutes(5)); |
|
|
|
|
|
|
|
result[1].EndTime.ShouldBe(TimeSpan.FromMinutes(10)); |
|
|
|
|
|
|
|
result[2].EndTime.ShouldBe(TimeSpan.FromMinutes(15)); |
|
|
|
|
|
|
|
result[3].EndTime.ShouldBe(TimeSpan.FromMinutes(20)); |
|
|
|
|
|
|
|
result[4].EndTime.ShouldBe(TimeSpan.FromMinutes(25)); |
|
|
|
|
|
|
|
result[5].EndTime.ShouldBe(TimeSpan.FromMinutes(30)); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|