mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-01-12 10:22:04 +01:00
- put file name in Sqlite connect string in quotes - improvements to Mediatek Philips 120+125/Sony serializer (physically reorder XML nodes, use flags stored in Java serialized blob) - selecting a RefList changed the current working directory, which prevented .ini files to be found by loaders
213 lines
7.7 KiB
C#
213 lines
7.7 KiB
C#
using System.Linq;
|
|
using ChanSort.Api;
|
|
using ChanSort.Loader.Sony;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
namespace Test.Loader.Sony
|
|
{
|
|
[TestClass]
|
|
public class SonyXmlTest
|
|
{
|
|
// Android OS seems to use the "FormateVer" XML element, KDL 2012 and 2014 use "FormatVer"
|
|
// Bravia 7 and 8 (2024, 2025) contain a Mediatek XML inside sdb.xml, just like Philips' "MtkChannelList.xml" with slight differences
|
|
|
|
#region TestAndroid ... ChannelsAddedToCorrectLists
|
|
[TestMethod]
|
|
public void TestAndroidSatChannelsAddedToCorrectLists()
|
|
{
|
|
this.TestChannelsAddedToCorrectLists("android_sdb-sat.xml", SignalSource.DvbS, 1163, 1004, 159);
|
|
this.TestChannelsAddedToCorrectLists("android_sdb-sat.xml", SignalSource.DvbS | SignalSource.Provider1, 397, 265, 132);
|
|
this.TestChannelsAddedToCorrectLists("android_sdb-sat.xml", SignalSource.DvbS | SignalSource.Provider2, 0, 0, 0);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void TestAndroidCableChannelsAddedToCorrectLists()
|
|
{
|
|
this.TestChannelsAddedToCorrectLists("android_sdb-cable.xml", SignalSource.DvbC | SignalSource.Tv, 314, 314, 0);
|
|
this.TestChannelsAddedToCorrectLists("android_sdb-cable.xml", SignalSource.DvbC | SignalSource.Radio, 112, 0, 112);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void TestAndroidAntennaChannelsAddedToCorrectLists()
|
|
{
|
|
this.TestChannelsAddedToCorrectLists("android_sdb-antenna.xml", SignalSource.DvbT | SignalSource.Tv, 53, 53, 0);
|
|
this.TestChannelsAddedToCorrectLists("android_sdb-antenna.xml", SignalSource.DvbT | SignalSource.Radio, 6, 0, 6);
|
|
}
|
|
#endregion
|
|
|
|
#region TestKdl ... ChannelsAddedToCorrectLists
|
|
[TestMethod]
|
|
public void TestKdlSatChannelsAddedToCorrectLists()
|
|
{
|
|
this.TestChannelsAddedToCorrectLists("kdl_sdb-cable-sat.xml", SignalSource.DvbS, 1540, 1225, 173, 7216, "HUMAX DOWNLOAD SVC");
|
|
}
|
|
|
|
[TestMethod]
|
|
public void TestKdlCableChannelsAddedToCorrectLists()
|
|
{
|
|
// there are 237 tv+radio channels in the list, but only a subset has assigned program numbers
|
|
this.TestChannelsAddedToCorrectLists("kdl_sdb-cable-sat.xml", SignalSource.DvbC | SignalSource.Tv, 189, 189, 0);
|
|
this.TestChannelsAddedToCorrectLists("kdl_sdb-cable-sat.xml", SignalSource.DvbC | SignalSource.Radio, 47, 0, 47);
|
|
this.TestChannelsAddedToCorrectLists("kdl_sdb-cable-sat.xml", SignalSource.DvbC | SignalSource.Data, 1, 0, 0, 5024, "Zapp PDS");
|
|
}
|
|
#endregion
|
|
|
|
#region TestMediatek (Bravia 2024,2025)
|
|
[TestMethod]
|
|
public void TestMediatekCableChannelsAddedToCorrectLists()
|
|
{
|
|
// there are 237 tv+radio channels in the list, but only a subset has assigned program numbers
|
|
this.TestChannelsAddedToCorrectLists("mediatek-sdb.xml", SignalSource.DvbC | SignalSource.Tv, 237, 237, 0);
|
|
this.TestChannelsAddedToCorrectLists("mediatek-sdb.xml", SignalSource.DvbC | SignalSource.Radio, 138, 0, 138);
|
|
this.TestChannelsAddedToCorrectLists("mediatek-sdb.xml", SignalSource.DvbC | SignalSource.Data, 0, 0, 0);
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region TestChannelsAddedToCorrectList
|
|
private void TestChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTotal, int expectedTv, int expectedRadio, int dataProgramSid = 0, string dataProgramName = null)
|
|
{
|
|
var tempFile = TestUtils.DeploymentItem("Test.Loader.Sony\\TestFiles\\" + fileName);
|
|
var plugin = new SonyPlugin();
|
|
var ser = plugin.CreateSerializer(tempFile);
|
|
ser.Load();
|
|
|
|
var root = ser.DataRoot;
|
|
|
|
var list = root.GetChannelList(signalSource);
|
|
|
|
if (list == null)
|
|
{
|
|
if (expectedTotal == 0)
|
|
return;
|
|
Assert.IsNotNull(list);
|
|
}
|
|
Assert.AreEqual(expectedTotal, list.Channels.Count);
|
|
Assert.AreEqual(expectedTv, list.Channels.Count(ch => (ch.SignalSource & SignalSource.Tv) != 0));
|
|
Assert.AreEqual(expectedRadio, list.Channels.Count(ch => (ch.SignalSource & SignalSource.Radio) != 0));
|
|
|
|
// check that data channel is in the TV list
|
|
if (dataProgramSid != 0)
|
|
{
|
|
var chan = list.Channels.FirstOrDefault(ch => ch.ServiceId == dataProgramSid);
|
|
Assert.IsNotNull(chan);
|
|
Assert.AreEqual(dataProgramName, chan.Name);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region TestAndroidDeletingChannel
|
|
|
|
[TestMethod]
|
|
public void TestAndroidDeletingChannel()
|
|
{
|
|
var tempFile = TestUtils.DeploymentItem("Test.Loader.Sony\\TestFiles\\android_sdb-sat.xml");
|
|
var plugin = new SonyPlugin();
|
|
var ser = plugin.CreateSerializer(tempFile);
|
|
ser.Load();
|
|
var data = ser.DataRoot;
|
|
data.ValidateAfterLoad();
|
|
data.ApplyCurrentProgramNumbers();
|
|
|
|
// Pr# 128 = ORF2E
|
|
|
|
var dvbs = data.GetChannelList(SignalSource.DvbS);
|
|
var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E");
|
|
Assert.IsNotNull(orf2e);
|
|
Assert.AreEqual(127, orf2e.OldProgramNr);
|
|
Assert.AreEqual(127, orf2e.NewProgramNr);
|
|
Assert.IsFalse(orf2e.IsDeleted);
|
|
|
|
orf2e.NewProgramNr = -1;
|
|
data.AssignNumbersToUnsortedAndDeletedChannels(UnsortedChannelMode.Delete);
|
|
|
|
Assert.IsTrue(orf2e.IsDeleted);
|
|
Assert.IsTrue(orf2e.NewProgramNr > 0);
|
|
Assert.AreEqual(0, dvbs.Channels.Count(ch => ch.NewProgramNr <= 0));
|
|
|
|
|
|
// save and reload
|
|
ser.Save();
|
|
ser = plugin.CreateSerializer(tempFile);
|
|
ser.Load();
|
|
data = ser.DataRoot;
|
|
data.ValidateAfterLoad();
|
|
data.ApplyCurrentProgramNumbers();
|
|
|
|
// channel was marked deleted
|
|
dvbs = data.GetChannelList(SignalSource.DvbS);
|
|
orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E");
|
|
Assert.IsNotNull(orf2e);
|
|
Assert.IsTrue(orf2e.IsDeleted);
|
|
Assert.AreEqual(-1, orf2e.NewProgramNr);
|
|
}
|
|
#endregion
|
|
|
|
#region TestKdlDeletingChannel
|
|
|
|
[TestMethod]
|
|
public void TestKdlDeletingChannel()
|
|
{
|
|
var tempFile = TestUtils.DeploymentItem("Test.Loader.Sony\\TestFiles\\kdl_sdb-cable-sat.xml");
|
|
var plugin = new SonyPlugin();
|
|
var ser = plugin.CreateSerializer(tempFile);
|
|
ser.Load();
|
|
var data = ser.DataRoot;
|
|
data.ValidateAfterLoad();
|
|
data.ApplyCurrentProgramNumbers();
|
|
|
|
// Pr# 128 = ORF2E
|
|
|
|
var dvbs = data.GetChannelList(SignalSource.DvbS);
|
|
var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E");
|
|
Assert.IsNotNull(orf2e);
|
|
Assert.AreEqual(693, orf2e.OldProgramNr);
|
|
Assert.AreEqual(693, orf2e.NewProgramNr);
|
|
Assert.IsFalse(orf2e.IsDeleted);
|
|
|
|
orf2e.NewProgramNr = -1;
|
|
data.AssignNumbersToUnsortedAndDeletedChannels(UnsortedChannelMode.Delete);
|
|
|
|
Assert.IsTrue(orf2e.IsDeleted);
|
|
Assert.AreEqual(0, orf2e.NewProgramNr);
|
|
|
|
|
|
// save and reload
|
|
ser.Save();
|
|
ser = plugin.CreateSerializer(tempFile);
|
|
ser.Load();
|
|
data = ser.DataRoot;
|
|
data.ValidateAfterLoad();
|
|
data.ApplyCurrentProgramNumbers();
|
|
|
|
// channel was not assigned a number in the file
|
|
dvbs = data.GetChannelList(SignalSource.DvbS);
|
|
orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E");
|
|
Assert.IsNotNull(orf2e);
|
|
Assert.IsTrue(orf2e.IsDeleted);
|
|
Assert.AreEqual(-1, orf2e.NewProgramNr);
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region TestChannelAndFavListEditing_Android
|
|
[TestMethod]
|
|
public void TestChannelAndFavListEditing_Android()
|
|
{
|
|
var tempFile = TestUtils.DeploymentItem("Test.Loader.Sony\\TestFiles\\android_sdb-sat.xml");
|
|
RoundtripTest.TestChannelAndFavListEditing(tempFile, new SonyPlugin());
|
|
}
|
|
#endregion
|
|
|
|
#region TestChannelAndFavListEditing_KDL
|
|
[TestMethod]
|
|
public void TestChannelAndFavListEditing_KDL()
|
|
{
|
|
var tempFile = TestUtils.DeploymentItem("Test.Loader.Sony\\TestFiles\\kdl_sdb-cable-sat.xml");
|
|
RoundtripTest.TestChannelAndFavListEditing(tempFile, new SonyPlugin());
|
|
}
|
|
#endregion
|
|
}
|
|
}
|