@ -75,4 +75,106 @@ public class FillerExpressionTests
@@ -75,4 +75,106 @@ public class FillerExpressionTests
result [ 1 ] . EndTime . ShouldBe ( TimeSpan . FromMinutes ( 2 0 ) ) ;
result [ 2 ] . EndTime . ShouldBe ( TimeSpan . FromMinutes ( 3 0 ) ) ;
}
[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 ( 3 0 ) ;
// 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 ( 1 0 ) , Title = "Here" } ,
new ( ) { ChapterId = 3 , StartTime = TimeSpan . FromMinutes ( 1 0 ) , EndTime = TimeSpan . FromMinutes ( 1 5 ) , Title = "Not Here" } ,
new ( ) { ChapterId = 4 , StartTime = TimeSpan . FromMinutes ( 1 5 ) , EndTime = TimeSpan . FromMinutes ( 2 0 ) , Title = "Here" } ,
new ( ) { ChapterId = 5 , StartTime = TimeSpan . FromMinutes ( 2 0 ) , EndTime = TimeSpan . FromMinutes ( 2 5 ) , Title = "Not Here" } ,
new ( ) { ChapterId = 6 , StartTime = TimeSpan . FromMinutes ( 2 5 ) , EndTime = TimeSpan . FromMinutes ( 3 0 ) , 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 ( 1 0 ) ) ;
result [ 1 ] . EndTime . ShouldBe ( TimeSpan . FromMinutes ( 2 0 ) ) ;
result [ 2 ] . EndTime . ShouldBe ( TimeSpan . FromMinutes ( 3 0 ) ) ;
}
[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 ( 3 0 ) ;
// 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 ( 1 0 ) , Title = "Here" } ,
new ( ) { ChapterId = 3 , StartTime = TimeSpan . FromMinutes ( 1 0 ) , EndTime = TimeSpan . FromMinutes ( 1 5 ) , Title = "Not Here" } ,
new ( ) { ChapterId = 4 , StartTime = TimeSpan . FromMinutes ( 1 5 ) , EndTime = TimeSpan . FromMinutes ( 2 0 ) , Title = "Here" } ,
new ( ) { ChapterId = 5 , StartTime = TimeSpan . FromMinutes ( 2 0 ) , EndTime = TimeSpan . FromMinutes ( 2 5 ) , Title = "Not Here" } ,
new ( ) { ChapterId = 6 , StartTime = TimeSpan . FromMinutes ( 2 5 ) , EndTime = TimeSpan . FromMinutes ( 3 0 ) , 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 ( 1 0 ) ) ;
result [ 1 ] . EndTime . ShouldBe ( TimeSpan . FromMinutes ( 2 0 ) ) ;
result [ 2 ] . EndTime . ShouldBe ( TimeSpan . FromMinutes ( 3 0 ) ) ;
}
[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 ( 3 0 ) ;
// 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 ( 1 0 ) , Title = "Here" } ,
new ( ) { ChapterId = 3 , StartTime = TimeSpan . FromMinutes ( 1 0 ) , EndTime = TimeSpan . FromMinutes ( 1 5 ) , Title = "Not Here" } ,
new ( ) { ChapterId = 4 , StartTime = TimeSpan . FromMinutes ( 1 5 ) , EndTime = TimeSpan . FromMinutes ( 2 0 ) , Title = "Here" } ,
new ( ) { ChapterId = 5 , StartTime = TimeSpan . FromMinutes ( 2 0 ) , EndTime = TimeSpan . FromMinutes ( 2 5 ) , Title = "Not Here" } ,
new ( ) { ChapterId = 6 , StartTime = TimeSpan . FromMinutes ( 2 5 ) , EndTime = TimeSpan . FromMinutes ( 3 0 ) , 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 ( 1 0 ) ) ;
result [ 2 ] . EndTime . ShouldBe ( TimeSpan . FromMinutes ( 1 5 ) ) ;
result [ 3 ] . EndTime . ShouldBe ( TimeSpan . FromMinutes ( 2 0 ) ) ;
result [ 4 ] . EndTime . ShouldBe ( TimeSpan . FromMinutes ( 2 5 ) ) ;
result [ 5 ] . EndTime . ShouldBe ( TimeSpan . FromMinutes ( 3 0 ) ) ;
}
}