private void ChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTv, int expectedRadio, int dataProgramSid, string dataProgramName) { var testFile = TestUtils.DeploymentItem("Test.Loader.LG\\GlobalClone\\" + fileName); var plugin = new LgPlugin(); var ser = plugin.CreateSerializer(testFile); ser.Load(); var root = ser.DataRoot; var tv = root.GetChannelList(signalSource | SignalSource.Tv); Assert.IsNotNull(tv); Assert.AreEqual(expectedTv, tv.Channels.Count); var radio = root.GetChannelList(signalSource | SignalSource.Radio); Assert.IsNotNull(radio); Assert.AreEqual(expectedRadio, radio.Channels.Count); // check that data channel is in the TV list var chan = tv.Channels.FirstOrDefault(ch => ch.ServiceId == dataProgramSid); Assert.IsNotNull(chan); Assert.AreEqual(dataProgramName, chan.Name); }
private void ExecuteTest(string modelAndBaseName, bool generateReferenceFile = false) { // copy required input and assertion files TestUtils.DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\" + modelAndBaseName + ".TLL.in"); TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\" + modelAndBaseName + ".TLL.out"); var baseName = Path.GetFileNameWithoutExtension(modelAndBaseName); // load the TLL file var plugin = new LgPlugin(); var serializer = (TllFileSerializer)plugin.CreateSerializer(baseName + ".TLL.in"); serializer.IsTesting = true; serializer.Load(); serializer.DataRoot.ApplyCurrentProgramNumbers(); // save TLL file and compare to reference file serializer.CleanUpChannelData(); serializer.Save(tempFile); if (generateReferenceFile) { File.Copy(tempFile, TestUtils.GetSolutionBaseDir() + "\\Test.Loader.LG\\" + modelAndBaseName + ".TLL.out", true); } else { AssertBinaryFileContent(tempFile, baseName + ".TLL.out"); } }
public void TestGlobalClone200JsonFormat() { var tempFile = TestUtils.DeploymentItem("Test.Loader.LG\\GlobalClone\\GlobalClone00201.TLL"); var orig = File.ReadAllText(tempFile, Encoding.UTF8); var plugin = new LgPlugin(); var ser = plugin.CreateSerializer(tempFile); ser.Load(); var data = ser.DataRoot; data.ValidateAfterLoad(); data.ApplyCurrentProgramNumbers(); var dvbs = data.GetChannelList(SignalSource.DvbS); // swap SRF 1 HD and SRF zwei HD var srf1 = dvbs.Channels.FirstOrDefault(ch => ch.Name == "SRF 1 HD"); var srf2 = dvbs.Channels.FirstOrDefault(ch => ch.Name == "SRF zwei HD"); Assert.AreEqual(1971, srf1.NewProgramNr); Assert.AreEqual(1972, srf2.NewProgramNr); srf1.NewProgramNr = 1972; srf2.NewProgramNr = 1971; // save and reload ser.Save(tempFile); ser = plugin.CreateSerializer(tempFile); ser.Load(); data = ser.DataRoot; data.ValidateAfterLoad(); data.ApplyCurrentProgramNumbers(); dvbs = data.GetChannelList(SignalSource.DvbS); srf1 = dvbs.Channels.FirstOrDefault(ch => ch.Name == "SRF 1 HD"); srf2 = dvbs.Channels.FirstOrDefault(ch => ch.Name == "SRF zwei HD"); Assert.AreEqual(1972, srf1.OldProgramNr); Assert.AreEqual(1971, srf2.OldProgramNr); // restore original program numbers and save srf1.NewProgramNr = 1971; srf2.NewProgramNr = 1972; ser.Save(tempFile); // undo expected changes to the file var changed = File.ReadAllText(tempFile, Encoding.UTF8); changed = changed.Replace("\"userEditChNumber\":true", "\"userEditChNumber\":false"); changed = changed.Replace("\"userSelCHNo\":true", "\"userSelCHNo\":false"); NUnit.Framework.Assert.AreEqual(orig, changed); // need NUnit.AreEqual to only show the actual difference and not 5MB + 5MB of data }
public void TestDeletingChannel() { var tempFile = TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\LM\\xxLM620s-ZE00001.TLL.in"); var plugin = new LgPlugin(); var ser = plugin.CreateSerializer(tempFile); ser.Load(); var data = ser.DataRoot; data.ValidateAfterLoad(); data.ApplyCurrentProgramNumbers(); // Pr# 127 = ORF2 HD var dvbs = data.GetChannelList(SignalSource.DvbS); var orf2 = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2 HD"); Assert.AreEqual(127, orf2.OldProgramNr); Assert.AreEqual(127, orf2.NewProgramNr); Assert.IsFalse(orf2.IsDeleted); orf2.NewProgramNr = -1; data.AssignNumbersToUnsortedAndDeletedChannels(UnsortedChannelMode.Delete); Assert.IsTrue(orf2.IsDeleted); Assert.AreEqual(0, orf2.NewProgramNr); // save and reload ser.Save(tempFile); ser = plugin.CreateSerializer(tempFile); ser.Load(); data = ser.DataRoot; data.ValidateAfterLoad(); data.ApplyCurrentProgramNumbers(); dvbs = data.GetChannelList(SignalSource.DvbS); orf2 = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2 HD"); Assert.IsTrue(orf2.IsDeleted); Assert.AreEqual(-1, orf2.OldProgramNr); Assert.AreEqual(-1, orf2.NewProgramNr); }
protected void ExecuteTest(string modelAndBaseName) { // copy required input and assertion files TestUtils.DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\" + modelAndBaseName + ".TLL.in"); TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\" + modelAndBaseName + ".csv.in"); TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\" + modelAndBaseName + ".TLL.out"); var baseName = Path.GetFileNameWithoutExtension(modelAndBaseName); // load the TLL file var plugin = new LgPlugin(); var serializer = (TllFileSerializer)plugin.CreateSerializer(baseName + ".TLL.in"); serializer.IsTesting = true; serializer.Load(); // verify channel name, number, favorites, ... against a reference list var data = serializer.DataRoot; data.ValidateAfterLoad(); data.ApplyCurrentProgramNumbers(); AssertRefListContent(data, baseName + ".csv.in"); // modify channel lists Editor editor = new Editor(); editor.DataRoot = data; foreach (var list in data.ChannelLists) { var channels = this.Get2ndProgramNumber(list); if (channels != null) { editor.ChannelList = list; editor.MoveChannels(channels, true); } } // save TLL file and compate to reference file serializer.Save(tempFile); AssertBinaryFileContent(tempFile, baseName + ".TLL.out"); }
public void TestLgTllLoader() { var expectedData = this.InitExpectedLgData(); var plugin = new LgPlugin(); StringBuilder errors = new StringBuilder(); var list = this.FindAllFiles("TestFiles_LG", "*.tll"); var models = new Dictionary <string, string>(); var firmwareSize = new Dictionary <int, string>(); foreach (var file in list) { if (file.Contains("GlobalClone")) { continue; } //Debug.Print("Testing " + file); try { var ser = plugin.CreateSerializer(file); Assert.IsNotNull(ser, "No Serializer for " + file); // ignore GlobalClone XML based files which slipped through the file name check above var serializer = ser as TllFileSerializer; if (serializer == null) { continue; } serializer.IsTesting = true; serializer.Load(); var fileName = Path.GetFileName(file) ?? ""; var model = this.GetLgModel(file); var analogList = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.AnalogCT | ChanSort.Api.SignalSource.Tv); var dvbcList = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.DvbC | ChanSort.Api.SignalSource.Tv); var dvbtList = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.DvbT | ChanSort.Api.SignalSource.Tv); var satChannelList = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.DvbS | ChanSort.Api.SignalSource.Tv); string key = model + "\t" + serializer.ACTChannelLength + "\t" + (analogList != null && analogList.Count > 0) + "\t" + (dvbtList != null && dvbtList.Count > 0) + "\t" + (dvbcList != null && dvbcList.Count > 0) + "\t" + serializer.SatChannelLength + "\t" + (satChannelList != null && satChannelList.Count > 0) + "\t" + (dvbtList != null && dvbtList.PresetProgramNrCount > 0) + "\t" + (dvbcList != null && dvbcList.PresetProgramNrCount > 0) + "\t" + (satChannelList != null && satChannelList.PresetProgramNrCount > 0) + "\t" + serializer.TvCountryCode; string relPath = Path.GetFileName(Path.GetDirectoryName(file)) + "\\" + fileName; models[key] = model + "\t" + serializer.ACTChannelLength + "\t" + serializer.SatChannelLength + "\t" + (analogList == null ? 0 : analogList.Count) + "\t" + (dvbtList == null ? 0 : dvbtList.Count) + "\t" + (dvbcList == null ? 0 : dvbcList.Count) + "\t" + (satChannelList == null ? 0 : satChannelList.Count) + "\t" + (dvbtList == null ? 0 : dvbtList.PresetProgramNrCount) + "\t" + (dvbcList == null ? 0 : dvbcList.PresetProgramNrCount) + "\t" + (satChannelList == null ? 0 : satChannelList.PresetProgramNrCount) + "\t" + serializer.TvCountryCode + "\t" + serializer.DvbsSymbolRateCorrectionFactor + "\t" + relPath; if (firmwareSize.ContainsKey(serializer.FirmwareBlockSize)) { string x = firmwareSize[serializer.FirmwareBlockSize]; if (!x.Contains(model)) { firmwareSize[serializer.FirmwareBlockSize] = x + ", " + model; } } else { firmwareSize[serializer.FirmwareBlockSize] = model; } Assert.IsFalse(serializer.DataRoot.IsEmpty, "No channels loaded from " + file); ExpectedData exp; key = Path.GetFileName(Path.GetDirectoryName(file)) + "\\" + Path.GetFileName(file); if (expectedData.TryGetValue(key, out exp)) { var analogTv = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.AnalogCT | ChanSort.Api.SignalSource.Tv); var dvbcTv = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.DvbC | ChanSort.Api.SignalSource.Tv); var dvbtTv = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.DvbT | ChanSort.Api.SignalSource.Tv); var dtvTv = dvbcTv.Channels.Count > 0 ? dvbcTv : dvbtTv; var satTv = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.DvbS | ChanSort.Api.SignalSource.Tv); expectedData.Remove(key); Assert.AreEqual(exp.AnalogChannels, analogTv.Channels.Count, file + ": analog"); Assert.AreEqual(exp.DtvChannels, dtvTv.Channels.Count, file + ": DTV"); if (exp.SatChannels != 0) { Assert.AreEqual(exp.SatChannels, satTv.Channels.Count, file + ": Sat"); } } } catch (Exception ex) { errors.AppendLine(); errors.AppendLine(); errors.AppendLine(file); errors.AppendLine(ex.ToString()); } } foreach (var model in models.OrderBy(e => e.Key)) { Debug.WriteLine(model.Value); } foreach (var size in firmwareSize.OrderBy(e => e.Key)) { Debug.WriteLine(size.Key + "\t" + size.Value); } if (expectedData.Count > 0) { Assert.Fail("Some files were not tested: " + expectedData.Keys.Aggregate((prev, cur) => prev + "," + cur)); } Assert.AreEqual("", errors.ToString()); }