2023-01-04 13:31:46 +01:00
|
|
|
|
using System.IO;
|
|
|
|
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
2021-01-24 11:57:06 +01:00
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using ChanSort.Api;
|
2021-03-14 22:13:22 +01:00
|
|
|
|
using ChanSort.Loader.M3u;
|
2021-01-24 11:57:06 +01:00
|
|
|
|
|
|
|
|
|
|
namespace Test.Loader.M3u
|
|
|
|
|
|
{
|
|
|
|
|
|
[TestClass]
|
|
|
|
|
|
public class M3uTest
|
|
|
|
|
|
{
|
2023-01-04 13:31:46 +01:00
|
|
|
|
#region TestReading()
|
2021-01-24 11:57:06 +01:00
|
|
|
|
[TestMethod]
|
2023-01-04 13:31:46 +01:00
|
|
|
|
public void TestReading()
|
2021-01-24 11:57:06 +01:00
|
|
|
|
{
|
|
|
|
|
|
var m3uFile = TestUtils.DeploymentItem("Test.Loader.M3u\\TestFiles\\example.m3u");
|
|
|
|
|
|
var refFile = TestUtils.DeploymentItem("Test.Loader.M3u\\TestFiles\\example-ref.txt");
|
|
|
|
|
|
|
2021-03-14 22:13:22 +01:00
|
|
|
|
var loader = new M3uPlugin();
|
2021-01-24 11:57:06 +01:00
|
|
|
|
var ser = loader.CreateSerializer(m3uFile);
|
|
|
|
|
|
ser.Load();
|
|
|
|
|
|
Assert.IsNotNull(ser);
|
|
|
|
|
|
var root = ser.DataRoot;
|
|
|
|
|
|
Assert.IsNotNull(root);
|
|
|
|
|
|
|
|
|
|
|
|
root.ApplyCurrentProgramNumbers();
|
|
|
|
|
|
var lists = root.ChannelLists.ToList();
|
|
|
|
|
|
Assert.AreEqual(1, lists.Count);
|
|
|
|
|
|
var chans = lists[0].Channels;
|
|
|
|
|
|
Assert.AreEqual(6, chans.Count);
|
|
|
|
|
|
Assert.AreEqual("Russia Today", chans[0].Name);
|
|
|
|
|
|
Assert.AreEqual(1, chans[0].NewProgramNr);
|
|
|
|
|
|
Assert.AreEqual("MP4", chans[5].Name);
|
|
|
|
|
|
Assert.AreEqual(6, chans[5].NewProgramNr);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var refLoader = new RefSerializerPlugin();
|
|
|
|
|
|
var refSer = refLoader.CreateSerializer(refFile);
|
|
|
|
|
|
refSer.Load();
|
|
|
|
|
|
var ed = new Editor();
|
|
|
|
|
|
ed.DataRoot = ser.DataRoot;
|
|
|
|
|
|
ed.ChannelList = lists[0];
|
2021-03-27 17:05:23 +01:00
|
|
|
|
|
|
|
|
|
|
// reset the order so we can apply a reference list
|
|
|
|
|
|
foreach (var chan in lists[0].Channels)
|
|
|
|
|
|
chan.NewProgramNr = -1;
|
|
|
|
|
|
|
2021-01-24 11:57:06 +01:00
|
|
|
|
//ed.ApplyReferenceList(refSer.DataRoot);
|
2021-03-13 18:11:30 +01:00
|
|
|
|
ed.ApplyReferenceList(refSer.DataRoot, refSer.DataRoot.ChannelLists.First(), 0, lists[0], 0,false, 0, null, true, false);
|
2021-01-24 11:57:06 +01:00
|
|
|
|
|
|
|
|
|
|
Assert.AreEqual(1, chans[5].NewProgramNr);
|
|
|
|
|
|
Assert.AreEqual(2, chans[4].NewProgramNr);
|
|
|
|
|
|
}
|
2023-01-04 13:31:46 +01:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region TestSavingKeepsExtinfTags()
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void TestSavingKeepsExtinfTags()
|
|
|
|
|
|
{
|
|
|
|
|
|
var m3uFile = TestUtils.DeploymentItem("Test.Loader.M3u\\TestFiles\\extinftags.m3u");
|
|
|
|
|
|
|
|
|
|
|
|
var orig = File.ReadAllText(m3uFile);
|
|
|
|
|
|
|
|
|
|
|
|
var loader = new M3uPlugin();
|
|
|
|
|
|
var ser = loader.CreateSerializer(m3uFile);
|
|
|
|
|
|
ser.Load();
|
|
|
|
|
|
ser.Save();
|
|
|
|
|
|
|
|
|
|
|
|
var text = File.ReadAllText(m3uFile);
|
|
|
|
|
|
|
|
|
|
|
|
orig = orig.Replace("\r", "").TrimEnd();
|
|
|
|
|
|
text = text.Replace("\r", "").TrimEnd();
|
|
|
|
|
|
NUnit.Framework.Assert.AreEqual(orig, text);
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
2021-03-14 22:13:22 +01:00
|
|
|
|
|
|
|
|
|
|
#region TestChannelAndFavListEditing
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void TestChannelAndFavListEditing()
|
|
|
|
|
|
{
|
|
|
|
|
|
var tempFile = TestUtils.DeploymentItem("Test.Loader.M3u\\TestFiles\\example.m3u");
|
|
|
|
|
|
RoundtripTest.TestChannelAndFavListEditing(tempFile, new M3uPlugin());
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
2021-01-24 11:57:06 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|