Files
ChanSort/source/Test.Loader.M3u/M3uTest.cs
Horst Beham e27087e6e4 - TCL/Thomson: improved file detection (.tar file or directory containing DtvData.db, satellite.db, cloneCRC.bin)
- m3u: #EXTINF tag data is displayed in "Short Name" column and can be edited
- m3u: fixed saving #EXTINF lines containing tag data
- m3u: readded "File / Save as" menu item (but not for other types of lists)
2023-01-04 13:31:46 +01:00

87 lines
2.6 KiB
C#

using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Linq;
using ChanSort.Api;
using ChanSort.Loader.M3u;
namespace Test.Loader.M3u
{
[TestClass]
public class M3uTest
{
#region TestReading()
[TestMethod]
public void TestReading()
{
var m3uFile = TestUtils.DeploymentItem("Test.Loader.M3u\\TestFiles\\example.m3u");
var refFile = TestUtils.DeploymentItem("Test.Loader.M3u\\TestFiles\\example-ref.txt");
var loader = new M3uPlugin();
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];
// reset the order so we can apply a reference list
foreach (var chan in lists[0].Channels)
chan.NewProgramNr = -1;
//ed.ApplyReferenceList(refSer.DataRoot);
ed.ApplyReferenceList(refSer.DataRoot, refSer.DataRoot.ChannelLists.First(), 0, lists[0], 0,false, 0, null, true, false);
Assert.AreEqual(1, chans[5].NewProgramNr);
Assert.AreEqual(2, chans[4].NewProgramNr);
}
#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
#region TestChannelAndFavListEditing
[TestMethod]
public void TestChannelAndFavListEditing()
{
var tempFile = TestUtils.DeploymentItem("Test.Loader.M3u\\TestFiles\\example.m3u");
RoundtripTest.TestChannelAndFavListEditing(tempFile, new M3uPlugin());
}
#endregion
}
}