private void TestChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTv, int expectedRadio, int dataProgramSid = 0, string dataProgramName = null)
        {
            var tempFile = TestUtils.DeploymentItem("Test.Loader.Toshiba\\TestFiles\\" + fileName);
            var plugin   = new ToshibaPlugin();
            var ser      = plugin.CreateSerializer(tempFile);

            ser.Load();

            var root = ser.DataRoot;

            var tv = root.GetChannelList(signalSource);

            if (expectedTv > 0)
            {
                Assert.IsNotNull(tv);
                Assert.AreEqual(expectedTv, tv?.Channels.Count ?? 0);
            }

            if (expectedRadio > 0)
            {
                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
            if (dataProgramSid != 0)
            {
                var chan = tv.Channels.FirstOrDefault(ch => ch.ServiceId == dataProgramSid);
                Assert.IsNotNull(chan);
                Assert.AreEqual(dataProgramName, chan.Name);
            }
        }
        public void TestDeletingChannel()
        {
            var tempFile = TestUtils.DeploymentItem("Test.Loader.Toshiba\\TestFiles\\settingsDB.db");
            var plugin   = new ToshibaPlugin();
            var ser      = plugin.CreateSerializer(tempFile);

            ser.Load();
            var data = ser.DataRoot;

            data.ValidateAfterLoad();
            data.ApplyCurrentProgramNumbers();

            // Pr# 379 = ORF2E

            var dvbs  = data.GetChannelList(SignalSource.DvbS);
            var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E");

            Assert.IsNotNull(orf2e);
            Assert.AreEqual(379, orf2e.OldProgramNr);
            Assert.AreEqual(379, orf2e.NewProgramNr);
            Assert.IsFalse(orf2e.IsDeleted);

            orf2e.NewProgramNr = -1;
            data.AssignNumbersToUnsortedAndDeletedChannels(UnsortedChannelMode.Delete);

            Assert.IsTrue(orf2e.IsDeleted);
            Assert.IsTrue(orf2e.NewProgramNr == 0);


            // save and reload
            ser.Save(tempFile);
            ser = plugin.CreateSerializer(tempFile);
            ser.Load();
            data = ser.DataRoot;
            data.ValidateAfterLoad();
            data.ApplyCurrentProgramNumbers();

            // channel was deleted from database
            dvbs  = data.GetChannelList(SignalSource.DvbS);
            orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E");
            Assert.IsNull(orf2e);
        }