33 lines
2.9 KiB
C#
33 lines
2.9 KiB
C#
using System;
|
|
using Jellyfin.Plugin.Enigma2;
|
|
using MediaBrowser.Controller.LiveTv;
|
|
|
|
public static class ChannelReferenceTests
|
|
{
|
|
public static void Run(Action<bool,string> check)
|
|
{
|
|
const string oldPuls = "1:0:1:3D66:2C88:13E:820000:0:0:0:";
|
|
const string newPuls = "1:0:1:13F1:5DC:13E:820000:0:0:0:";
|
|
const string oldTvn = "1:0:1:3DD2:640:13E:820000:0:0:0:";
|
|
const string newTvn = "1:0:19:3DD2:640:13E:820000:0:0:0:";
|
|
var channels = new[] { new ChannelInfo { Id=newPuls, Name="TV PULS HD" }, new ChannelInfo { Id=newTvn, Name="TVN24 HD" } };
|
|
check(ChannelReferenceResolver.Resolve(newPuls,channels,()=>throw new Exception("Unnecessary library lookup"))==newPuls,"current channel uses its exact reference without historical lookup");
|
|
check(ChannelReferenceResolver.Resolve(oldTvn,channels,()=>throw new Exception("Unnecessary library lookup"))==newTvn,"saved TVN24 reference resolves changed service type");
|
|
check(ChannelReferenceResolver.Resolve(oldPuls,channels,()=>"TV PULS HD")==newPuls,"saved Puls reference resolves migrated SID and transponder");
|
|
check(ChannelReferenceResolver.Resolve(oldPuls,channels,()=>"tv puls hd ")==newPuls,"historical name matches case and surrounding whitespace only");
|
|
check(ChannelReferenceResolver.Resolve(oldPuls,channels,()=>"TV PULS")==oldPuls,"HD and SD names are not guessed");
|
|
check(ChannelReferenceResolver.Resolve(oldPuls,channels,()=>null)==oldPuls,"unknown historical name preserves original service");
|
|
var duplicate = new[] { channels[0], channels[0] };
|
|
check(ChannelReferenceResolver.Resolve(oldPuls,duplicate,()=>"TV PULS HD")==newPuls,"same reference in two bouquets is not ambiguous");
|
|
var ambiguous = new[] { channels[0], new ChannelInfo { Id=oldTvn, Name="TV PULS HD" } };
|
|
check(ChannelReferenceResolver.Resolve(oldPuls,ambiguous,()=>"TV PULS HD")==oldPuls,"different services with the same name are not guessed");
|
|
var types = new[] { channels[1], new ChannelInfo { Id="1:0:1F:3DD2:640:13E:820000:0:0:0:",Name="TVN24 HD" } };
|
|
check(ChannelReferenceResolver.Resolve(oldTvn,types,()=>throw new Exception("Ambiguous identity must not fall back"))==oldTvn,"ambiguous DVB identity cannot select arbitrary service type");
|
|
var presentOld = new[] { channels[0], new ChannelInfo { Id=oldPuls,Name="TV PULS HD" } };
|
|
check(ChannelReferenceResolver.Resolve(oldPuls,presentOld,()=>throw new Exception("Exact reference wins"))==oldPuls,"reference still present in bouquet wins over same-name alternative");
|
|
check(ChannelReferenceResolver.Resolve(oldTvn,Array.Empty<ChannelInfo>(),()=>"TVN24 HD")==oldTvn,"empty bouquet cannot redirect a saved channel");
|
|
const string nonDvb = "4097:0:1:3DD2:640:13E:820000:0:0:0:";
|
|
check(ChannelReferenceResolver.Resolve(nonDvb,channels,()=>null)==nonDvb,"non-DVB reference cannot use service-type fallback");
|
|
}
|
|
}
|